一、分页查询的一般方法
-
定义一个分类类型的实体
/** * 封装分页查询结果 */ @Data @AllArgsConstructor @NoArgsConstructor public class PageResult implements Serializable { private long total; //总记录数 private List records; //当前页数据集合 } -
在controller使用分页方法,由于方法比较简单就不展示
-
在serviceimpl层编写逻辑:
public PageBean page(Integer pageTotal, Integer pageSize) { //1.获取总记录数 Long total = empMapper.getTotal(); //2.获取数据列表 pageTotal = (pageTotal - 1) * pageSize; List<Emp> rows = empMapper.getrows(pageTotal,pageSize); //3.封装数据 PageBean pageBean = new PageBean(); pageBean.setTotal(total); pageBean.setRows(rows); return pageBean; } -
mapper层
/** * 先获取总条数 * @return @Select("select count(*) from emp") public Long getTotal(); /** * 然后获取列表数据 * @return */ @Select("select * from emp limit #{pageTotal},#{pageSize}") List<Emp> getrows(Integer pageTotal, Integer pageSize);
二、使用分页插件的方法
-
使用分页插件需要引入依赖:
不同版本的Jdk适用不同版本,需要注意版本错误
<dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper-spring-boot-starter</artifactId> <version>1.4.7</version> </dependency> -
controller与mapper代码与方法一相同
-
servoceimpl中使用以下代码(代码基本固定)
public PageResult page(SetmealPageQueryDTO setmealPageQueryDTO) { //调用分页创建,获取总条数和当前页数 PageHelper.startPage(setmealPageQueryDTO.getPage(),setmealPageQueryDTO.getPageSize()); //调用固定方法封装 Page<SetmealVO> page = setmealMapper.page(setmealPageQueryDTO); //数据的封装 long total = page.getTotal(); List<SetmealVO> records = page.getResult(); //返回封装的数据 return new PageResult(total,records); }