您的位置:首页 > 编程语言 > Go语言

golang实战使用gin+xorm搭建go语言web框架restgo详解6.4 推荐编程方式

2018-02-19 10:58 1871 查看

6.4 高级查询

对于部分比较特殊的服务,比如根据关键字、创建时间等查询获取用户信息,我们需要设计便于维护的数据结构,我们建议将查询条件封装到一个结构体中,具体操作如下
1、在model目录下定义用户信息查询条件结构体UserArg.gopackage model
type UserArg struct {
   PageArg
   ttype string `form:"ttype" json:"ttype"`
}
其中PageArg结构体是一个公用的结构体,它定义了常用的查询条件如时间范围Datafrom,Dateto,关键字Kname,以及分页起始页pagefrom,分页大小pagesize,asc排序字段,desc排序字段等。type PageArg struct {
   Kword string `form:"kword"`
   Datefrom time.Time `form:"datefrom" time_format:"2006-01-02 15:04:05"`
   Dateto time.Time   `form:"dateto" time_format:"2006-01-02 15:04:05"`
   Pagesize int       `form:"pagesize" json:"pagesize"`
   Pagefrom int       `form:"pagefrom" json:"pagefrom"  validate:"gte=0"`
   Desc string        `form:"desc" json:"desc"`
   Asc  string        `form:"asc" json:"asc"`
}
2、在UserService.go中定义通用查询方法Query
func (service *UserService)Query(arg model.UserArg)([]entity.User){
   var users []entity.User = make([]entity.User , 0)
   orm := restgo.OrmEngin("ds1")
   t := orm.Where("id>0")
   if (0<len(arg.Kword)){
      t = t.Where("name like ?","%"+arg.Kword+"%")
   }

   if (!arg.Datefrom.IsZero()){
      t = t.Where("create_at >= ?",arg.Datefrom)
   }
   if (!arg.Dateto.IsZero()){
      t = t.Where("create_at <= ?",arg.Dateto)
   }
   t.Limit(arg.GetPageFrom()).Find(&users)
   return  users
}
3、在UserController.go中调用Query方法
func (ctrl *UserController)query(ctx *gin.Context){
  var userArg model.UserArg
  ctx.ShouldBind(&userArg)
  ret := userService.Query(userArg)
  //最后响应数据列表到前端

  restgo.ResultList(ctx,ret,1024)
}
本文源代码源代码获取地址 https://github.com/winlion/restgo

待提供源代码清单

10.1 restgo后台管理框架

https://github.com/winlion/restgo-admin

10.天天任务清单小程序
https://github.com/winlion/dailytask

10.工业大数据采集
10.restgo cms 
10.restgo 千人大群

golang实战使用gin+xorm搭建go语言web框架restgo详解1.1 go语言的困境

golang实战使用gin+xorm搭建go语言web框架restgo详解1.2 我要做什么

golang实战使用gin+xorm搭建go语言web框架restgo详解2 框架基本架构

golang实战使用gin+xorm搭建go语言web框架restgo详解3 系统常用配置参数

golang实战使用gin+xorm搭建go语言web框架restgo详解4 路由配置

golang实战使用gin+xorm搭建go语言web框架restgo详解5 控制器C

golang实战使用gin+xorm搭建go语言web框架restgo详解5.2 跳转和重定向

golang实战使用gin+xorm搭建go语言web框架restgo详解5.3 资源控制器

golang实战使用gin+xorm搭建go语言web框架restgo详解5.4 控制器参数绑定

golang实战使用gin+xorm搭建go语言web框架restgo详解5.5 控制器模型绑定

golang实战使用gin+xorm 搭建 go语言web框架restgo搭建详解5.6 控制器参数校验

Golang go语言整合gin+xorm 搭建 web框架restgo搭建详解5.7 控制器数据响应

golang实战使用gin+xorm搭建go语言web框架restgo详解5.9 控制器controller编程

golang实战使用gin+xorm搭建go语言web框架restgo详解6.1 模型M和Orm

golang实战使用gin+xorm搭建go语言web框架restgo详解6.4 推荐编程方式

golang实战使用gin+xorm搭建go语言web框架restgo详解7 视图层V

golang实战使用gin+xorm搭建go语言web框架restgo详解8 关于模板

golang实战使用gin+xorm搭建go语言web框架restgo详解9 session、日志、鉴权

作者简介:胡文林,持续创业者,长期从事技术开源工作。微信号jiepool-winlion

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  gin golang restgo 胡文林
相关文章推荐