一架梯子,一头程序猿,仰望星空!

GORM插入数据


一、gorm新增记录

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

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

db.Create(&u)

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

二、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。