添加依赖

    <!--添加分页插件-->
<!--只配置当前这一个依赖 PageHelper不生效-->
        <dependency>
            <groupId>com.github.pagehelper</groupId>
            <artifactId>pagehelper</artifactId>
            <version>5.1.10</version>
        </dependency>
<!--还需要把这个依赖添加到pom当中  自动排序和分页就可以使用了-->
<dependency>
   <groupId>com.github.pagehelper</groupId>
   <artifactId>pagehelper-spring-boot-autoconfigure</artifactId>
    <version>1.2.3</version>
</dependency>

后台关键的代码

实现类中的关键代码

 @Override
    public PageVue<Album> query(AlbumQuery albumQuery, Integer pageSize, Integer pageNum) {
        com.github.pagehelper.Page<Album> page = PageHelper.startPage(pageNum,pageSize);//分页插件类的加载,它自动为下面的查询分页   pageNum是页码  pageSize是查询的数据数量  即每页多少
        // 或者直接使用PageHelper.startPage(pageNum,pageSize)   它会为下面的list分页查询
        List<Album> albums = albumMapper.query(albumQuery);//从数据库中查询满足条件的
        PageVue<Album> res = new PageVue<>(albums);//将我需要的数据封装到另一个自定义类中

        System.out.println("总数为:"+page.getTotal());
        res.setTotal(page.getTotal());//设置总数
        return res;
    }

AlbumQuery 类

是我自定义的包含 查询条件 的类

public class AlbumQuery {
    private String nameLike;//相册名称
    private String tagLike;//相册类型
    private String userLike;//用户名称  弃用
    .............
    }

PageVue类

是我自定义的类,用来返回查询信息和数据总数

public class PageVue<T> implements Serializable {
    private List<T> list;
    private long total;
    .............
}

sql

  <!--Vue  分页查询    名称用模糊查询,类型不用-->
    <select id="query" parameterType="com.setup.entity.AlbumQuery" resultType="com.setup.entity.Album">
        select *
        from album a
        <where>
            <if test="nameLike !=null and nameLike !='' ">
                and a.a_name like "%"#{nameLike}"%"
            </if>
            <if test="tagLike !=null and tagLike !='' ">
                and a.a_theme like #{tagLike}
            </if>
            and a.a_status = 1 and a.a_authority = 2
        </where>
    </select>

控制层

  //前端基于Vue写的
     //查询,分页   可以根据相册名称,类型或用户名称查询
     @CrossOrigin(origins ="*",maxAge = 3600)  //跨域注解
     @GetMapping(value = "/pageVue")
     @ResponseBody
     public PageVue<Album> query(AlbumQuery albumQuery,
                       @RequestParam(value = "pageSize") Integer pageSize,
                       @RequestParam(value = "pageNum") Integer pageNum){

         System.out.println(albumQuery);
         System.out.println(pageSize+" ::"+pageNum);
         return recommendService.query(albumQuery, pageSize, pageNum);
     }


PageHelper分页的实现原来是在我们执行SQL语句之前动态的将SQL语句拼接了分页的语句,从而实现了从数据库中分页获取的过程。

参考:
Mybatis分页插件PageHelper使用教程(图文详细版)
配置参考:
Pagehelper分页插件的配置和各种使用方式
原理参考:浅析pagehelper分页原理

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐