Gorm框架 插入数据

1. Gorm 新增记录

// 定义一个用户,并初始化数据
u := User{
	Username:"codebaoku",
	Password:"123456",
	CreateTime:time.Now().Unix(),
}

// 插入一条用户数据
// 下面代码会自动生成 SQL 语句:INSERT INTO `users` (`username`,`password`,`createtime`) VALUES ('codebaoku','123456','1540824823')

db.Create(&u)

// 一般项目中我们会类似下面的写法,通过 Error 对象检测,插入数据有没有成功,如果没有错误那就是数据写入成功了。
if err := db.Create(&u).Error; err != nil {
	fmt.Println("插入失败", err)
	return
}

 

2. Gorm 如何获取新插入记录的自增 ID

Gorm 2.0 版本以后,默认会自动返回主键 ID 值。

// 定义一个用户,并初始化数据
u := User{...忽略初始化代码...} 

// 插入记录
db.Create(&u)

u.ID           // 返回主键 ID,默认主键名为 ID,也可以通过 gorm 标签定义,请参考前面的模型定义章节
u.Error        // 返回 error
u.RowsAffected // 返回插入记录的条数

提示:如果 Gorm 设置了数据库连接池,那么每次执行数据库查询的时候都会从数据库连接池申请一个数据库连接,那么上述代码必须使用数据库事务,确保插入数据和查询自增 ID 两条 Sql 语句是在同一个数据库连接下执行,否则在高并发场景下,可能会查询不到自增 ID,或者查询到错误的 ID。

Gorm 提供了一组函数,用于快速拼接生成 Sql 语句,尽量减少编写 Sql 语句的工作量。同时,Gorm 将查询结果保存到结构体(struct)变量中,方便使用。Gorm 框架库是协程安全的,它提供的函数可以在多个协程中,安全地并发执行。Gorm 查询主要由query,where,order,limit,count,group 等多个函数组成,这些函数可以串起来组合 Sql 语句,使用起来类似编写 Sql 语句的习惯。