可以使用 GORM 的 DB 对象来执行原生 SQL 操作,然后结合 SQL 的 INSERT INTO 语句来实现批量插入数据。
以下是一个示例代码,假设我们有一个 users 表,包含 id、name 和 age 三个字段,我们要批量插入多个用户的数据:
// 定义用户结构体
type User struct {
ID int
Name string
Age int
}
// 定义多个用户数据
users := []User{
{1, "张三", 20},
{2, "李四", 22},
{3, "王五", 24},
}
// 获取 GORM 的 DB 对象
db := database.GetDB()
// 开始事务
tx := db.Begin()
// 构建 SQL 语句
sqlStr := "INSERT INTO users (id, name, age) VALUES "
vals := []interface{}{}
for _, user := range users {
sqlStr += "(?, ?, ?),"
vals = append(vals, user.ID, user.Name, user.Age)
}
sqlStr = strings.TrimSuffix(sqlStr, ",")
// 执行 SQL 语句
if err := tx.Exec(sqlStr, vals...).Error; err != nil {
// 如果出现错误,回滚事务
tx.Rollback()
return err
}
// 提交事务
tx.Commit()