全部学科
NodeJS全栈
nodejs
Python全栈
python
小程序首页
📅 2026-05-21 5 分钟 ✍️ juanwangdev

GORM 创建记录

GORM 的 Create 方法用于将数据插入数据库,支持单条、批量插入,并自动回填主键与默认值。

定义

Create 方法接收结构体指针或切片,执行 INSERT 操作后自动填充自增主键、时间戳等字段。

语法

Go
func (db *DB) Create(value interface{}) (tx *DB)
func (db *DB) CreateInBatches(value interface{}, batchSize int) (tx *DB)

示例

插入单条记录

Go
type User struct {
    gorm.Model
    Name string
    Age  int
}

user := User{Name: "张三", Age: 25}
result := db.Create(&user)

fmt.Println(user.ID)     // 自动回填主键
fmt.Println(result.Error) // 检查错误
fmt.Println(result.RowsAffected) // 影响行数

插入多条记录

Go
users := []User{
    {Name: "李四", Age: 30},
    {Name: "王五", Age: 28},
}
db.Create(&users)

批量插入(推荐)

Go
// 每批 100 条
db.CreateInBatches(&users, 100)

指定字段创建

Go
// 仅插入 Name 字段(忽略零值字段)
db.Select("Name", "Age").Create(&user)

// 排除某些字段
db.Omit("Age").Create(&user)

注意事项

  • 必须传入结构体指针,否则无法回填主键
  • gorm.Model 自动包含 IDCreatedAtUpdatedAtDeletedAt 字段
  • 批量插入时,Create 单条 SQL 可能超过数据库限制,大数量使用 CreateInBatches
  • 零值字段(如 Age: 0)默认不插入,需用 Select 显式指定或使用指针类型 *int
  • CreatedAt 仅在创建时自动填充,UpdatedAt 在每次更新时自动变更

要点总结

  • Create 支持单条、批量插入,自动回填主键
  • 大数据量使用 CreateInBatches 分批插入
  • 传入指针才能获取回填的主键值
  • 零值字段需用 Select 显式指定或使用指针类型
  • gorm.Model 自动管理时间戳字段

📝 发现内容有误?点击此处直接编辑

← 上一篇 模型定义基础
下一篇 → GORM 删除记录
想查看更多题目和详细解析?
小程序提供完整的题库、模拟考试和详细解析
马上就来

长按或扫描二维码,立即体验

扫码体验小程序
马上就来
使用微信扫描二维码
立即体验完整题库