golang通过mysql语句实现分页查询
目录
- 1.前端接口调用
- 2.register访问入口
- 3.解析参数
- 4.service实现
- 5.mapper实现
1.前端接口调用
文章图片
2.register访问入口
//查询一个用户下所有的subnetws.Route(ws.GET("/subnets").To(sc.ListSubnet).Doc("List subnets authorized to the login user.").Param(ws.QueryParameter(query.ParameterPage, "page").Required(false).DataFormat("page=%d").DefaultValue("page=1")).Param(ws.QueryParameter(query.ParameterLimit, "limit").Required(false)).Returns(http.StatusOK, api.StatusOK, api.ListResult{}))
3.解析参数
//查询某个用户下所有的subnet信息func (v *SubController) ListSubnet(request *restful.Request, response *restful.Response) {username := request.Attribute(filters.UserName).(string)subnetService := &service.SubnetService{}query := query.ParseQueryParameter(request)result, err := subnetService.ListSubnet(query, v.Db, username)if err != nil {api.HandleError(response, request, err)return}response.WriteEntity(result)}
文章图片
4.service实现
//查询一个用户所有的subnet信息func (ss *SubnetService) ListSubnet(query *query.Query, db *sql.DB, userName string) (*api.ListResult, error) {sm := mapper.NewSubnetMapper(db)sb, err := sm.SearchAllByUserName(query, userName)return sb, err}
5.mapper实现
//查询用户下的所以信息func (s *SubnetMapper) SearchAllByUserName(query *query.Query, userName string) (*api.ListResult, error) {totalRow, err := s.Db.Query("SELECT COUNT(*) from t_subnet ,t_vpc where t_vpc.id = t_subnet.vpcid and username = ?", userName)if err != nil {klog.Error("query orders count error", err)return nil, err}total := 0for totalRow.Next() {err := totalRow.Scan(&total,)if err != nil {klog.Error("query orders count error", err)continue}}totalRow.Close()rows, err := s.Db.Query(SearchAllByUserNameSql, userName, query.Pagination.Limit, query.Pagination.Offset)defer func() {if rows != nil {rows.Close()}}()if err != nil {klog.Error("query subnet error", err)return nil, err}items := make([]interface{}, 0)for rows.Next() {ss := new(vpc.SubnetItem)err = rows.Scan(&ss.VpcName, &ss.VpcNetwork, &ss.SubnetName, &ss.SubnetNetwork, &ss.CreateTime)items = append(items, *ss)}return &api.ListResult{TotalItems: total,Items: items,}, nil}
可以看到第一步查出了所有count数目:
文章图片
查询语句加上参数。控制查到的页数。
文章图片
返回的是总数量跟当前查询页。
特殊情况用不到数据库分页的,就需要用到内存分页了,下期小编给大家讲解内存分页。
【golang通过mysql语句实现分页查询】到此这篇关于golang通过mysql语句实现分页查询的文章就介绍到这了,更多相关mysql实现分页查询内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
推荐阅读
- Python调用MySQLdb插入中文乱码的解决
- mysql|【centos7 + MySQL5.7 安装】centos7 安装MySQL5.7
- 模型部署|通过MACE在Android手机上部署深度学习模型
- Mysql的分布式(XA)真面目
- MySQL|MySQL — 数据查询语言
- MySQL|MySQL 创建多对多和一对一关系方法
- 华为云数据库内核专家为您揭秘MySQL Volcano模型迭代器性能提升千倍的秘密
- 权威认可!华为云GaussDB两大数据库通过信通院最新评测
- Mysql学习笔记-InnoDB深度解析
- 图文详解Mysql索引的最左前缀原则