使用 gorp 如何有效地插入多条记录?即不是一次插入一个,是否有批量插入?var User struct { Name string Email string Phone string}var users []Usersusers = buildUsers()dbMap.Insert(users...) //this fails compilation//I am forced to loop over users and insert one user at a time. Error Handling omitted for brevitygorp有更好的机制吗?驱动程序是 MySQL。
2 回答
HUH函数
TA贡献1836条经验 获得超4个赞
当我发现了一些其他资源的原因,这并不工作,是interface{}和User{}没有在内存中相同的布局,因此,他们的切片兼容的类型不。建议的解决方案是转换[]User{}为[]interface{}in for 循环,如下所示:https : //golang.org/doc/faq#convert_slice_of_interface
仍然需要注意:您需要对DbMap.Insert()函数使用指针。
这是我解决它的方法:
s := make([]interface{}, len(users))
for i, v := range users {
s[i] = &v
}
err := dbMap.Insert(s...)
注意这&v很重要,否则Insert会抱怨非指针。
慕森王
TA贡献1777条经验 获得超3个赞
看起来 gorp 没有任何东西可以为原始 SQL 或多值插入提供包装器(这始终取决于 SQL 方言)。
您是否担心速度或交易?如果没有,我只会在 for 循环中进行插入。
- 2 回答
- 0 关注
- 248 浏览
添加回答
举报
0/150
提交
取消