1、使用 limit 实现分页
select * from xxx limit m,n
# m 表示从第几条数据开始,默认从0开始
# n 表示查询几条数据
select * from xxx limit 2,3
# 从索引为2的数据开始,往后查询三个。2、3、4
(1) 创建分页对象,用来封装分页的数据
PS:我使用了Lombok插件,或者直接生成set、get、toString也一样。
/**** Author: YZG* Date: 2023/3/5 21:55* Description: 用于封装分页信息*/
@Data
@ToString
public class Page {// 当前页码数private Integer currPage;// 总页码 = 总记录数 / 当前页记录数// 总记录数private Integer totalCount;// 每页记录数private Integer pageSize;// 数据private List list;}
(1)提供俩个方法
/** 以下俩个方法用于分页* map 用于封装查询参数* */List findUserByPage(Map map);
// 查询总记录数Integer totalCount();
mapper 映射文件:
(2)提供分页方法
/*** @description 分页方法* @date 2023/3/5 22:18* @param currPage 当前页* @param pageSize 每页记录数* @return com.example.mptest.entity.Page*/public Page findUserByPage(int currPage, int pageSize) {// 创建分页对象Page page = new Page<>();HashMap params = new HashMap<>();// 起始查询数据索引。// 比如:查询第二页,每页5条数据. (2-1) * 5 = 5, 查询的数据索引为: 5,6,7,8,9params.put("start", (currPage - 1) * pageSize);params.put("pageSize", pageSize);// 每页的数据List list = userMapper.findUserByPage(params);// 查询总记录数int totalCount = userMapper.count();
// 封装分页信息返回page.setCurrPage(currPage);page.setPageSize(pageSize);page.setList(list);page.setTotalCount(totalCount);return page;}
2、使用 pagehelper 插件
(1)引入依赖
com.github.pagehelper pagehelper 5.2.0
(2)配置分页拦截器
PS:由于我使用的SpringBoot,直接向容器中注入即可。
@Configuration
public class MyBatisConfig {
@Beanpublic PageInterceptor pageInterceptor(){return new PageInterceptor();}
}
或者在spring配置文件中配置:
(3)测试
@Testpublic void testPage() {
// pageNum:当前页码 pageSize:每页记录数PageHelper.startPage(1,3);// 查询所有数据List list = userMapper.findAll();// 第一个参数:需要分页的数据// 第二个参数:导航分页的页码数。也就是显示多少页PageInfo pageInfo = new PageInfo<>(list,3);// pageInfo 里保存了分页的所有信息System.out.println(pageInfo);}
关于PageInfo里面的属性说明:
pageNum : 当前页码pageSize : 每页显示条数size : 当前页显示的真实条数total :总记录数pages:总页数prePage:上一页的页码nextPage : 下一页的页码isFirstPage/isLastPage:是否为第一页/最后一个hasPreviousPage/hasNextPage:是否有上一页/下一页navigatePage : 导航分页的页码数navigatePageNums : 导航分页显示的页码数 [1,2,3,4,5]
上一篇:UE实现相机聚焦物体功能