jdbctemplate分页mysql_jdbcTemplate 后台接口中的分页

本文介绍了如何在Springboot应用中利用jdbcTemplate进行分页查询,通过创建PageList对象封装分页信息,并在Controller中处理分页参数,结合SQL的limit关键字实现动态分页。详细代码示例展示了分页查询的实现过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

返回的结果:

ee284622b10668ab7395cef9d720cb8c.png

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值