使用gorm框架插入數據的時候,官方沒有現成的批量插入方法,可通過自己拼接sql語句,執行原生sql來實現
實現代碼
func (c *SalesDay)BatchSave(dataSlice []interface{}) (interface{}, error) { var buffer bytes.Buffer createTime := time.Now() sql := fmt.Sprintf("insert into `%s` (`book_id`,`date`,`create_time`,`update_time`) values", c.TableName()) if _, err := buffer.WriteString(sql); err != nil { return "", err } for i, e := range dataSlice { info := e.(map[string]interface{}) if i == len(dataSlice)-1 { buffer.WriteString(fmt.Sprintf(`("%s","%s",""%s","%s");`, info["bookId"], info["statDate"], createTime, createTime)) } else { buffer.WriteString(fmt.Sprintf(`("%s","%s","%s","%s"),`, info["bookId"], info["statDate"], createTime, createTime)) } } ctx := context.Background() mysql := db.Single.Mysql(c.client).WithContext(ctx, zymysql.Master()).Exec(buffer.String()) fmt.Println(mysql.Error) if mysql.Error != nil { return "", mysql.Error } return "", nil }