gorm获取最后插入的数据ID的方法 LastInsertId

9 篇文章 0 订阅

gorm这个ORM框架和我们常见的其他框架不太一样,他是没有LastInsertId这个方法的, 因为他内部使用了反射写数据的技术,他在数据插入成功后会将当前入库的数据写入到你插入的数据模型中, 所以我们在插入完成数据后直接调用 xx.Id 方法即可获取插入后的数据ID。

示例:

// 测试
	user:= entity.SysUser{}
	user.Username="zhansan"

	global.GetTx("sys_user").Create(&user) //数据插入
	lastId:= user.ID // 获取最后插入的数据ID

这里的 entity.SysUser 就是你的数据库表的实体对象定义, 在使用Create方法或者Save方法插入数据后gorm会将当前插入的数据对应的数据库中的记录都通过反射写入到user这个对象上面,我们要获取最后插入的ID或者当前插入数据的其他信息都可以通过这个对象获取, 这个还是很方便的,比使用LastInsertId 更加精简!

gorm反射写入数据核心代码示例

    tx.Statement.Dest = value



	// assign stmt.ReflectValue
	if stmt.Dest != nil {
		stmt.ReflectValue = reflect.ValueOf(stmt.Dest)
		for stmt.ReflectValue.Kind() == reflect.Ptr {
			if stmt.ReflectValue.IsNil() && stmt.ReflectValue.CanAddr() {
				stmt.ReflectValue.Set(reflect.New(stmt.ReflectValue.Type().Elem()))
			}

			stmt.ReflectValue = stmt.ReflectValue.Elem()
		}
		if !stmt.ReflectValue.IsValid() {
			db.AddError(ErrInvalidValue)
		}
	}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值