Go快速开发框架自定义数据库搜索条件,当你前端传多个搜索条件时候,需要接口对条件做判断,拼接查找的sql语句实现查询。下面我们对自定义搜索条件使用说明。
1.创建存储条件的数组
whereMap := gmap.New()
2.根据接口传参组装sql查询条件
//搜索添条件param, _ := gf.RequestParam(c)if name, ok := param["name"]; ok && name != "" {whereMap.Set("name like ?", "%"+gconv.String(name)+"%")}if mobile, ok := param["mobile"]; ok && mobile != "" {whereMap.Set("name", mobile)}if cid, ok := param["cid"]; ok && cid != "" {whereMap.Set("cid", cid)}
3.把查找条件数据传入orm查询中
MDB := gf.Model("user").Where(whereMap)//获取总数totalCount, _ := MDB.Clone().Count()//获取数据列表list, err := MDB.Fields("id,status,name").Page(pageNo, pageSize).Order("id asc").Select()if err != nil {gf.Failed().SetMsg(err.Error()).Regin(c)} else {gf.Success().SetMsg("获取数据列表").SetData(gf.Map{"page": pageNo,"pageSize": pageSize,"total": totalCount,"items": list,}).Regin(c)}
其他查询语句:
param, _ := gf.RequestParam(c)
//模糊查询
whereMap.Set("name like ?", "%"+gconv.String(param["name"])+"%")
//区间
whereMap.Set("createtime between ?", gf.Slice{param["star_time"], param["end_time"]})
//等于
whereMap.Set("cid", 2)
//大于
whereMap.Set("cid > ?", 2)
//大等于
whereMap.Set("cid >=?", 2)
//小于
whereMap.Set("cid < ?", 2)
//小等于
whereMap.Set("cid <=?", 2)
//in
whereMap.Set("cid", gf.Slice{1, 3, 6,7})
更多查询方式请到GoFly开发框架查看:Go快速开发框架文档