当前位置:   article > 正文

SpringBoot分页插件(PageHelper)_springboot pagehelper

springboot pagehelper

PageHelper分页插件应用

一、分页插件原理

Mybatis给开发者提供了一个拦截器接口,只要实现了该接口,就可以在Mybatis执行SQL前,作一些自定义的操作。分页插件就是在此基础上开发出来的,对于一个需要分页的SQL,插件会拦截并生成两段SQL。举一个简单的例子


// 原SQL
select * from table where a = '1'
// 拦截后的
   # 1.查询总数SQL:
   select count(1) from table where a = '1'
   # 2.分页SQL:
   select * from table where a = '1' limit 0,10
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

这样我们只需要根据业务逻辑开发原SQL,不需关心分页语法对原SQL的影响,拦截器已经为我们处理好了

二、实现步骤

1.在SpringBoot 的pom文件中引入分页插件的依赖

<dependency>
            <groupId>com.github.pagehelper</groupId>
            <artifactId>pagehelper-spring-boot-starter</artifactId>
            <version>1.4.2</version>
        </dependency>
  • 1
  • 2
  • 3
  • 4
  • 5

如果出现以下报错:
在这里插入图片描述

这里说明你现在使用的PageHelper 依赖版本过低,往高提版本就可以

2.修改业务逻辑层分页方法

2.1原始方法

Service层

  //查询符合条件的总条数
 Long total = empMapper.selectCount(name, gender, begin, end);
 //查询符合条件的集合
  Integer start = (page - 1) * pageSize;
  List<Emp> rows = empMapper.selectPage(name, gender, start, pageSize, begin, end);
  PageBean<Emp> pageBean = new PageBean<>(total, rows);
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

mapper / dao层

	//查询符合条件的总条数
	Long selectCount(String name, Integer gender, LocalDate begin, LocalDate end);
  //查询符合条件的集合
  List<Emp> selectPage(String name, Integer gender, Integer start, Integer pageSize, LocalDate begin, LocalDate end);
  • 1
  • 2
  • 3
  • 4

XXXmapper.xml

//查询符合条件的集合
<select id="selectPage" resultType="com.pw.tlias.pojo.Emp">
        select id, username, password, name, gender, image, job, entrydate, dept_id, create_time, update_time
        from emp
        <where>
            <if test="name != null and name != ''">
                and name like concat('%',#{name},'%')
            </if>
            <if test="gender != null">
                and gender = #{gender}
            </if>
            <if test="begin != null and end != null">
                and entrydate between #{begin} and #{end}
            </if>
        </where>
        limit #{start},#{pageSize}
    </select>
//查询符合条件的总条数    
    <select id="selectCount" resultType="java.lang.Long">
        select count(1) emp_count
        from emp
        <where>
            <if test="name != null and name != ''">
                and name like concat('%',#{name},'%')
            </if>
            <if test="gender != null">
                and gender = #{gender}
            </if>
            <if test="begin != null and end != null">
                and entrydate between #{begin} and #{end}
            </if>
        </where>
    </select>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33

原始方法代码复杂

2.2使用分页插件提供的方法

Service层

 // 分页插件分页
 // 设置分页参数
 PageHelper.startPage(page,pageSize);
 // PageHelper.startPage() 后直接跟查询语句
 List<Emp> emps = empMapper.selectPage(name, gender, begin, end);
 // Page 就是分页包装的结果对象
 Page<Emp> p = (Page<Emp>) emps;
 // 封装数据
 PageBean<Emp> pageBean = new PageBean<>(p.getTotal(),p.getResult());
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

mapper / dao层

List<Emp> selectPage(String name,Integer gender,LocalDate begin,LocalDate end);
  • 1

XXXmapper.xml

<select id="selectPage" resultType="com.pw.tlias.pojo.Emp">
        select id, username, password, name, gender, image, job, entrydate, dept_id, create_time, update_time
        from emp
        <where>
            <if test="name != null and name != ''">
                and name like concat('%',#{name},'%')
            </if>
            <if test="gender != null">
                and gender = #{gender}
            </if>
            <if test="begin != null and end != null">
                and entrydate between #{begin} and #{end}
            </if>
        </where>
    </select>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

附加

在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/很楠不爱3/article/detail/87994
推荐阅读
相关标签
  

闽ICP备14008679号