天天看点

Springboot 快速学会使用 JPA 分页查询

如果还不知道springboot怎么使用JPA的,先参考这篇 Springboot快速整合JPA实现增删查改

接下来回到正题

示例场景,将下面表数据分页查询出来:

Springboot 快速学会使用 JPA 分页查询

 简单模拟,

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​​      (第一页的数据)