自学内容网 自学内容网

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

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)
}
}


原文地址:https://blog.csdn.net/tekin_cn/article/details/140404682

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!