gorm升级V1至V2
Count() 入参类型变化V1 : Count(int)V2: Count(int64)Limt()\Offset()入参类型由 interface{} -> intOrderv1: 参数为空字符串会被忽略,从而正常执行: Order("") 生成的sql中不带order byv2: 空字符串也会被生成 order by 语句,从而导致 sql 执行失败。需要自行判空Find在 V1 版本
·
Count() 入参类型变化
V1 : Count(int)
V2: Count(int64)
Limt()\Offset()
入参类型由 interface{} -> int
Order
v1: 参数为空字符串会被忽略,从而正常执行: Order("") 生成的sql中不带order by
v2: 空字符串也会被生成 order by 语句,从而导致 sql 执行失败。需要自行判空
Find
在 V1 版本中, Find(&User{}) 当记录不存在时会返回 ErrRecordNotFound
在 V2 版本中,Find(&User{}) 不会返回 ErrRecordNotFound
查询条件复用
V1示例:
query := db.Where("ctime > 123123123")
// 查询1
query.Offset((page-1) * pageSize).Limit(10).Find(&users)
// 查询2
query.Count(&count)
正确的V2版本 (复用条件时,需要带上 .Session(&grom.Session{}),否则会出现查询2里面带有查询1的条件,在并发情况下还会出现线程安全问题) :
query := db.Where("ctime > 123123123")
// 查询1
query.Session(&gorm.Session{}).Offset((page-1) * pageSize).Limit(10).Find(&users)
// 查询2
query.Session(&gorm.Session{}).Count(&count)
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)