golang通过mysql语句实现分页查询
作者:峰啊疯了 时间:2024-01-23 13:30:03
1.前端接口调用
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)
}
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数目:
查询语句加上参数。控制查到的页数。
返回的是总数量跟当前查询页。
特殊情况用不到数据库分页的,就需要用到内存分页了,下期小编给大家讲解内存分页。
来源:https://blog.51cto.com/u_12040959/5141995
标签:golang,mysql,分页查询
0
投稿
猜你喜欢
网站tab导航的设计
2008-11-10 12:36:00
PHP 二维数组根据某个字段排序的具体实现
2023-11-20 05:21:13
vue中iframe的使用及说明
2024-05-13 09:37:25
发现一个不错的11px字体:PMingLiu
2008-09-06 12:49:00
PHP最常用的正则表达式
2024-05-03 15:34:38
Pycharm Git 设置方法
2023-07-13 17:02:55
django 读取图片到页面实例
2023-02-22 13:30:50
利用Python实现热力图的绘制
2021-11-07 12:02:47
Ubuntu下安装卸载python3.8的过程
2021-09-06 10:43:28
python 基于空间相似度的K-means轨迹聚类的实现
2022-10-24 07:29:02
有感用户体验规划与系统实现
2009-11-27 18:33:00
浅析python打包工具distutils、setuptools
2021-03-30 14:45:14
vue通信方式EventBus的实现代码详解
2024-05-10 14:16:38
SQL Server数据库入门学习总结
2012-08-21 11:01:33
Python面向对象程序设计之类的定义与继承简单示例
2022-03-24 03:00:16
Python webargs 模块的简单使用
2021-02-27 11:56:04
SQL数据库十四种案例介绍
2024-01-14 14:50:42
Python pygame绘制文字制作滚动文字过程解析
2022-06-10 13:21:11
JDBC如何获取数据库连接
2024-01-23 05:53:50
删除数据库中重复数据的两个方法
2008-01-01 19:16:00