1. 引入分页插件依赖
<dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper-spring-boot-starter</artifactId> <version>1.2.3</version> </dependency>
2. 配置yml
# 分页插件配置 pagehelper: helperDialect: mysql supportMethodsArguments: true
3.分页数据封装到PagedGridResult类
package com.qing.springbootmould.utils; import com.github.pagehelper.PageInfo; import java.util.List; /** * * @Title: PagedGridResult.java * @Package com.imooc.utils * @Description: 用来返回分页Grid的数据格式 * Copyright: Copyright (c) 2019 */ public class PagedGridResult { private int page; // 当前页数 private int total; // 总页数 private long records; // 总记录数 private List<?> rows; // 每行显示的内容 public int getPage() { return page; } public void setPage(int page) { this.page = page; } public int getTotal() { return total; } public void setTotal(int total) { this.total = total; } public long getRecords() { return records; } public void setRecords(long records) { this.records = records; } public List<?> getRows() { return rows; } public void setRows(List<?> rows) { this.rows = rows; }
//分页数据进行封装到PagedGridResult类,传给前端 public static PagedGridResult setterPagedGrid(List<?> list, Integer page) { PageInfo<?> pageList = new PageInfo<>(list); PagedGridResult grid = new PagedGridResult(); grid.setPage(page); grid.setRows(list); grid.setTotal(pageList.getPages()); grid.setRecords(pageList.getTotal()); return grid; } }
4. 分页的使用
UserMapper.xml
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.qing.springbootmould.dao.UserMapper"> <!--查询全部用户--> <select id="findAll" resultType="com.qing.springbootmould.pojo.User"> select * from user </select> </mapper>
dao层
package com.qing.springbootmould.dao; import com.qing.springbootmould.pojo.User; import org.apache.ibatis.annotations.Mapper; import java.util.List; @Mapper public interface UserMapper { User findUser(Integer id); List<User> findAll(); }
service层,在这进行分页
UserService 接口
public interface UserService { //分页接口 PagedGridResult findAll(Integer page, Integer pageSize); }
UserServiceImpl 实现类
package com.qing.springbootmould.service.impl; import com.github.pagehelper.PageHelper; import com.qing.springbootmould.dao.UserMapper; import com.qing.springbootmould.pojo.User; import com.qing.springbootmould.service.UserService; import com.qing.springbootmould.utils.PagedGridResult; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.List; @Service public class UserServiceImpl implements UserService { @Autowired private UserMapper userMapper; @Override public PagedGridResult findAll(Integer page, Integer pageSize) { /** * page: 第几页 * pageSize: 每页显示条数 */ PageHelper.startPage(page, pageSize); // PageHelper.startPage(page, pageSize)方法必须放在业务查询的上方 List<User> userList = userMapper.findAll(); PagedGridResult pagedGridResult = PagedGridResult.setterPagedGrid(userList, page); return pagedGridResult; } }
TestController类
package com.qing.springbootmould.controller; import com.qing.springbootmould.pojo.Result; import com.qing.springbootmould.pojo.User; import com.qing.springbootmould.service.UserService; import com.qing.springbootmould.utils.PagedGridResult; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import springfox.documentation.annotations.ApiIgnore; import sun.awt.SunHints; import java.util.List; import java.util.Map; @RestController public class TestController { @Autowired private UserService userService; // http://localhost:8080/query3?page=1&pageSize=2 @GetMapping("/query3") public Result findUser3(@RequestParam(name="page") Integer page, @RequestParam(name="pageSize") Integer pageSize){ PagedGridResult gridResult = userService.findAll(page,pageSize); return Result.ok(gridResult); } }
测试结果: