示例场景,将下面表数据分页查询出来:
简单模拟,
mapper:
@Query(value="select * from user where id > (:id)",nativeQuery = true) Page<User> findById(@Param("id") Integer id, Pageable pageable);
service :
Page<User> findById( Integer id, Pageable pageable);
impl:
@Override public Page<User> findById(Integer id, Pageable pageable) { return userMapper.findById(id,pageable); }
controller:
最好看看代码里面的注释,使用分页的参数要素
@GetMapping("/getListPaging/{pageNum}") public String pageable(@PathVariable("pageNum") Integer pageNum) { //模拟每页条数 int pageSize = 3; /** * Pageable是接口,PageRequest是接口实现 * PageRequest的对象构造函数有多个 * pageNum是页数,初始值是0(按照我们默认思维第一页应该是1,所以我们设置的页数为pageNum-1) * size是查询结果的条数 * 后两个参数参考Sort对象的构造方法 第一个是代表排序方式,第二个是排序依据(下面代码例子,id实体类的主键,按照id排序) */ Pageable pageable = new PageRequest(pageNum - 1, pageSize, Sort.Direction.ASC, "id"); //模拟传入id值为2 int id = 2; Page<User> pageList = userService.findById(id, pageable); System.out.println("总条数是:" + pageList.getTotalElements() + "\n" + "总页数是:" + pageList.getTotalPages() + "\n" + "每页条数是:" + pageSize); //将查询出来的数据转为list List<User> dataList = pageList.getContent(); String jsonStr = JSON.toJSONString(dataList); System.out.println("当前为第" + pageNum + "页数据:" + "\n " + jsonStr); System.out.println("-------------------------------------------"); //按照当前页数、分页大小,查出的分页结果集合 for (User user : pageList.getContent()) { System.out.println(user.toString()); } return jsonStr; }
调用接口,查看控制台:
http://localhost:8055/getListPaging/1 (第一页的数据)
控制台: