欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-04-30 13:59:34
...

如果还不知道springboot怎么使用JPA的,先参考这篇 Springboot快速整合JPA实现增删查改:https://blog.csdn.net/qq_35387940/article/details/102541311

 

接下来回到正题
示例场景,将下面表数据分页查询出来:

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

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

 控制台:

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