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<User> 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<User> 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<User> 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://github.com/JasmineQian/SpringDemo_2019/tree/master/jdbcTemplate2page

 

 

最新文章

  1. 我为Net狂 ~ 社交平台系列小集合!
  2. SQL注入判断方法总结(持续更新)
  3. linux常用命令-权限管理命令
  4. Devexpress -换皮肤
  5. MongoDB的学习--聚合
  6. 关于html页面head标签顺序
  7. 【python cookbook】【数据结构与算法】16.筛选序列中的元素
  8. Java引进和应用的包装类
  9. 【C语言探索之旅】 第一部分第四课第二章:变量的世界之变量声明
  10. jmeter接口测试实践
  11. Collector for ArcGIS的使用体验
  12. 深度学习&amp;机器学习资源汇总1
  13. emWin收音机,含uCOS-III和FreeRTOS两个版本
  14. ABP中的拦截器之ValidationInterceptor(上)
  15. A*搜索详解(2)——再战觐天宝匣
  16. Vue 项目 Vue + restfulframework
  17. CNZZ友盟访问明细的采集办法
  18. 硬盘扩容9999T
  19. window alias给cmd命令起别名
  20. js- DOM事件之按钮绑定函数注意事项

热门文章

  1. JavaUtil 处理Base64的图片上传
  2. vue -resource 文件提交提示process,或者拦截处理
  3. Eloquent JavaScript #01# values
  4. linux下nginx编译安装
  5. SVN更新无数次后仍显示Out of date
  6. mysql Out of range value adjusted for column导致Warning(1265)Data truncated for column &#39;column_name&#39; at row 1
  7. 模拟实现ATM+购物商城程序
  8. mint-ui之Swipe使用
  9. 识别简单的答题卡(Bubble sheet multiple choice scanner and test grader using OMR, Python and OpenCV——jsxyhelu重新整编)
  10. 20165310 《Java程序设计》课程总结