使用 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有更好的機制嗎?驅(qū)動程序是 MySQL。
2 回答

HUH函數(shù)
TA貢獻1836條經(jīng)驗 獲得超4個贊
當我發(fā)現(xiàn)了一些其他資源的原因,這并不工作,是interface{}和User{}沒有在內(nèi)存中相同的布局,因此,他們的切片兼容的類型不。建議的解決方案是轉(zhuǎn)換[]User{}為[]interface{}in for 循環(huán),如下所示:https : //golang.org/doc/faq#convert_slice_of_interface
仍然需要注意:您需要對DbMap.Insert()函數(shù)使用指針。
這是我解決它的方法:
s := make([]interface{}, len(users))
for i, v := range users {
s[i] = &v
}
err := dbMap.Insert(s...)
注意這&v很重要,否則Insert會抱怨非指針。

慕森王
TA貢獻1777條經(jīng)驗 獲得超3個贊
看起來 gorp 沒有任何東西可以為原始 SQL 或多值插入提供包裝器(這始終取決于 SQL 方言)。
您是否擔心速度或交易?如果沒有,我只會在 for 循環(huán)中進行插入。
- 2 回答
- 0 關(guān)注
- 268 瀏覽
添加回答
舉報
0/150
提交
取消