博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
jdbcTemplate 后台接口中的分页
阅读量:6709 次
发布时间:2019-06-25

本文共 2641 字,大约阅读时间需要 8 分钟。

Springboot+jdbcTemplate  对查询结果列表做分页,

之前开发的小项目,数据逐渐增多,每次返回所有的查询结果,耗费性能和时间

想到做分页。 于是从简单的分页做起。 jdbcTemplate中实现分页。

 

新增一个页面对象, 分页需要知道当前是第几页,每页多少条数, 一共有多少页。查询显示的列表信息。 更多的还有数据排序,按照哪一个字段进行、或者哪几个字段进行 升序或者降序的排列。

PageList页面对象

package com.example.demo.utils;import java.util.ArrayList;import java.util.List;/** * 封装分页对象 **/public class PageList {    private int page;   //当前页    private int totalRows;   //总行数    private int pages;    //总页数    private List list=new ArrayList();    public int getPage() {        return page;    }    public void setPage(int page) {        this.page = page;    }    public int getPages() {        return pages;    }    public void setPages(int pages) {        this.pages = pages;    }    public List getList() {        if(list==null){            list=new ArrayList();        }        return list;    }    public void setList(List list) {        this.list = list;    }    public int getTotalRows() {        return totalRows;    }    public void setTotalRows(int totalRows) {        this.totalRows = totalRows;    }}

 

其他就是在controller中添加

@GetMapping("/findAllbyPager")    @ResponseBody    public PageList findAllbyPager(int pagenum, int pagerow) {        PageList pageList = new PageList();        if(pagenum == 0){pagenum=1;}        if(pagerow == 0){pagenum=30;}        List
list= userService.findAllbyPage(pagenum, pagerow ); int TotalRows = userService.countAll(); pageList.setPage(pagenum); pageList.setTotalRows(TotalRows); int pages= 0; if(TotalRows % pagerow == 0){ pages = TotalRows / pagerow;} else { pages = TotalRows / pagerow +1 ;} System.out.println("目前分页的总页数是"+pages); pageList.setPages(pages); pageList.setList(list); return pageList; }

 

int类型,没有传入值的时候,做的处理;

第几页,每页的行数,是传进来的数据,

拼接到sql中进行查询的时候,用limit做限制,比如下面的

@Override    public List
findAllbyPage(int pagenum, int pagerow) { int starter = (pagenum-1)*pagerow; String sql = "select id, name, age from user order by id asc limit " + starter +" , "+ pagerow; List
list = jdbcTemplate.query(sql,new UserRowMapper()); return list; }

 

【需要注意limit后面有空格, pagenum 和 pagerow 之间除了有逗号外,还有空格】 

 

 

pagenum需要设置一下,最好新增一个starter表示从第几行开始

第一页从1开始
第二页从 (2-1)*pageROW 开始, 我这边省略

 

select * from table limit m,n
其中m是指记录开始的index,从0开始,表示第一条记录
n是指从第m+1条开始,取n条。

 

select * from tablename limit 0,5

即取出第1条至第5条,5条记录

 

select * from tablename limit 5,5

即取出第6条至第10条,5条记录

 

查询结果:

请求的内容:

GET http://localhost:8080/findAllbyPager?pagenum=5&pagerow=2

返回的结果:

 

 

 更详细的的信息,比如如何获取总条数,请看下面的github中代码

 

 

转载于:https://www.cnblogs.com/qianjinyan/p/10357485.html

你可能感兴趣的文章
8-6测试总结
查看>>
输出九九乘法表(Python、Java、C、C++、JavaScript)
查看>>
Java IO ---学习笔记(字符流)
查看>>
shell date 获取昨天日期
查看>>
PHP正则表达式
查看>>
用来调整Windows 8外观的利器—Metro UI Tweaker
查看>>
WeX5和BeX5比较
查看>>
bzoj千题计划300:bzoj4823: [Cqoi2017]老C的方块
查看>>
检测项目
查看>>
【转】MMO即时战斗:地图角色同步管理和防作弊实现
查看>>
暑假初学知识笔记
查看>>
kindeditor.net应用
查看>>
Autofac的实例
查看>>
STL之vector
查看>>
【模板】Hash拉链法
查看>>
SQL系列(三)—— 注释(comment)
查看>>
C语言中 fputs() fgets() 的使用方法
查看>>
Bzoj3697 采药人的路径
查看>>
一步一步学Remoting之二:激活模式
查看>>
Python集合
查看>>