gorm多个不定查询字段\分页查询

3 篇文章 0 订阅

gorm多个不定查询字段查询;通过分别赋予tx.Where不定参数

https://cloud.tencent.com/developer/article/1374623
举例 不定(可能并没有参与sql查询的)查询条件 :
审核人(reviewer)、工单状态(status)、工单类型(type)、业务编号(objid)、创建人(creator)多个条件搜索

tx := dal.DBConnect.AdStyleRDS // 不要直接修改dal.DBConnect.AdStyleRDS, 因为我们只是用这一次,拷贝一个tx出来再修改就行
if req.Reviewer != nil {
   tx = tx.Where("reviewer = ?", *req.Reviewer)
}
if req.Creator != nil {
   tx = tx.Where("creator = ?", *req.Creator)
}
if req.Type != nil {
   tx = tx.Where("type = ?", *req.Type)
}
if req.ObjId != nil {
   tx = tx.Where("obj_id = ?", *req.ObjId)
}
if req.Status != nil {
   tx = tx.Where("status = ?", *req.Status)
}
order要在Find前才能实现排序
Order("id DESC").Find(&tickets).Error

gorm分页查询

tx := dal.DBConnect.AdStyleRDS // 不要直接修改dal.DBConnect.AdStyleRDS, 因为我们只是用这一次,拷贝一个tx出来再修改就行

var total int64
tx.Model(&model.TicketDDL{}).Count(&total) // 要在分页前计算记录总数 否则计算的是一页的数量

if page > 0 && size > 0 {    // page是页号
   tx = tx.Limit(int(size)).Offset(int((page - 1) * size))
}

pageNum := total / size    // pageNum是总页数
if total%size != 0 {
   pageNum++
}
// 如果前端传了页号 返回页号;如果前端没传页号说明想要全部记录,那么返回总页数
if req.Page != nil && req.Size != nil { // 如果前端传了指定要某页数据 返回页号
   PageDict["page"] = page
} else {
   PageDict["page"] = pageNum // 返回总页数
}
PageDict["size"] = size
PageDict["total"] = total
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值