jdbcTemplate 后台接口中的分页
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")@ResponseBodypublic 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做限制,比如下面的
@Overridepublic 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
转载于:https://www.cnblogs.com/qianjinyan/p/10357485.html
总结
以上是生活随笔为你收集整理的jdbcTemplate 后台接口中的分页的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: Nginx + Node + Vue 部
- 下一篇: SPIDR - 完美分割用户故事的五种简