gorm 分页和更新

gorm 查询分页

在编写其他语言框架代码的时候,使用limit语法糖 都是limit(a,b) 而看了grom的文档发现,limit(a) 只接受一个参数 仔细看了下 才发现是这样的

    pageindex := 1    
    pagesize  := 5
    db.Model(&Model.User{}).Offset((pageindex-1)*pagesize).Limit(pagesize)

一般我们查询分页 也会给前端返回总数 我觉得比较省事的方法


    userdb := db.Model(&Model.User{}).Where(&Model.User{Age:12})
    var count int32
    userdb.Count(&count) //总行数

    pageindex := 1    
    pagesize  := 5

    UserList := []Model.User{}
    userdb.Offset((pageindex-1)*pagesize).Limit(pagesize).Find(&UserList) //查询pageindex页的数据


gorm 空和0 无法更新的问题

假如我想更新user表的个性签名为空的话 或者状态为0的话 使用Updates(User{Name: "", Age: 0, Actived: false}) 是无法更新上去的,打印debug 也会看到sql语句并带有更新这些字段

    // WARNING when update with struct, GORM will only update those fields that with non blank value
    // For below Update, nothing will be updated as "", 0, false are blank values of their types
    db.Model(&user).Updates(User{Name: "", Age: 0, Actived: false})

所以后来我的解决办法就是 使用 map[string]interface{}{Name: "", Age: 0, Actived: false}

    db.Model(&user).Updates(map[string]interface{}{Name: "", Age: 0, Actived: false})


你可能感兴趣的:(gorm 分页和更新)