golang通过mysql语句实现分页查询

 更新时间:2022年03月25日 10:04:10   作者:峰啊疯了  
这篇文章主要介绍了golang通过mysql语句实现分页查询,文章内容介绍详细,具有一定的参考价值,需要的小伙伴可以参考一下,希望对你的学习有所帮助

1.前端接口调用

#yyds干货盘点#golang实现通过mysql语句实现分页查询_数据库分页

2.register访问入口

//查询一个用户下所有的subnet
ws.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)
}

#yyds干货盘点#golang实现通过mysql语句实现分页查询_分页_02

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 := 0
for 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数目:

#yyds干货盘点#golang实现通过mysql语句实现分页查询_数据库分页_03

查询语句加上参数。控制查到的页数。

#yyds干货盘点#golang实现通过mysql语句实现分页查询_数据库分页_04

返回的是总数量跟当前查询页。

特殊情况用不到数据库分页的,就需要用到内存分页了,下期小编给大家讲解内存分页。

到此这篇关于golang通过mysql语句实现分页查询的文章就介绍到这了,更多相关mysql实现分页查询内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Go语言算法之寻找数组第二大元素的方法

    Go语言算法之寻找数组第二大元素的方法

    这篇文章主要介绍了Go语言算法之寻找数组第二大元素的方法,以实例形式分析了不排序、只循环一次来实现寻找数组第二大元素的技巧,是比较典型的算法,需要的朋友可以参考下
    2015-02-02
  • golang db事务的统一封装的实现

    golang db事务的统一封装的实现

    这篇文章主要介绍了golang db事务的统一封装的实现,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-12-12
  • Go语言定时任务的实现示例

    Go语言定时任务的实现示例

    本文主要介绍了Go语言定时任务的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-05-05
  • Go语言字典(map)用法实例分析【创建,填充,遍历,查找,修改,删除】

    Go语言字典(map)用法实例分析【创建,填充,遍历,查找,修改,删除】

    这篇文章主要介绍了Go语言字典(map)用法,结合实例形式较为详细的分析了Go语言字典的创建、填充、遍历、查找、修改、删除等操作相关实现技巧,需要的朋友可以参考下
    2017-02-02
  • 在Go语言项目中使用Zap日志库的操作过程

    在Go语言项目中使用Zap日志库的操作过程

    本文将先介绍Go语言原生的日志库的使用,然后详细介绍非常流行的Uber开源的zap日志库,同时会介绍如何搭配·Lumberjack·实现日志的切割和归档,对Go使用Zap日志库相关知识感兴趣的朋友一起看看吧
    2024-03-03
  • GPT回答:go语言和C语言切片对比

    GPT回答:go语言和C语言切片对比

    这篇文章主要为大家介绍了GPT回答:go语言和C语言切片对比,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-10-10
  • 关于golang 字符串 int uint int64 uint64 互转问题

    关于golang 字符串 int uint int64 uint64&

    这篇文章主要介绍了golang 字符串 int uint int64 uint64 互转,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-01-01
  • 深入讲解Go语言中函数new与make的使用和区别

    深入讲解Go语言中函数new与make的使用和区别

    大家都知道Go语言中的函数new与函数make一直是新手比较容易混淆的东西,看着相似,但其实不同,不过解释两者之间的不同也非常容易,下面这篇文章主要给大家介绍了关于Go语言中函数new与make区别的相关资料,需要的朋友可以参考下。
    2017-10-10
  • Go库text与template包使用示例详解

    Go库text与template包使用示例详解

    这篇文章主要为大家介绍了Go库text与template包使用示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-12-12
  • Go语言学习教程之声明语法(译)

    Go语言学习教程之声明语法(译)

    Golang 就是类C的语法,下面这篇文章主要给大家介绍了关于Go语言学习教程之声明语法的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考借鉴,下面随着小编来一起学习学习吧。
    2017-11-11

最新评论