golang實戰使用gin+xorm搭建go語言web框架restgo詳解6.4 推薦程式設計方式
6.4 高階查詢
對於部分比較特殊的服務,比如根據關鍵字、建立時間等查詢獲取使用者資訊,我們需要設計便於維護的資料結構,我們建議將查詢條件封裝到一個結構體中,具體操作如下
1、在model目錄下定義使用者資訊查詢條件結構體UserArg.go
package modeltype UserArg struct { PageArg ttype string `form:"ttype" json:"ttype"`}
其中PageArg結構體是一個公用的結構體,它定義了常用的查詢條件如時間範圍Datafrom,Dateto,關鍵字Kname,以及分頁起始頁pagefrom,分頁大小pagesize,asc
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"`
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)){
3、在UserController.go中呼叫Query方法
func (ctrl *UserController)query(ctx *gin.Context){var userArg model.UserArgctx.ShouldBind(&userArg)ret := userService.Query(userArg)//最後響應資料列表到前端
restgo.ResultList(ctx,ret,1024)
}
待提供原始碼清單
10.1 restgo後臺管理框架
https://github.com/winlion/restgo-admin
10.2 天天任務清單小程式
https://github.com/winlion/dailytask
10.3 工業大資料採集
10.4 restgo cms
10.5 restgo 千人大群
作者簡介:胡文林,持續創業者,長期從事技術開源工作。微訊號jiepool-winlion