PageHelper分頁插件應(yīng)用
一、分頁插件原理
Mybatis給開發(fā)者提供了一個(gè)攔截器接口,只要實(shí)現(xiàn)了該接口,就可以在Mybatis執(zhí)行SQL前,作一些自定義的操作。分頁插件就是在此基礎(chǔ)上開發(fā)出來的,對于一個(gè)需要分頁的SQL,插件會攔截并生成兩段SQL。舉一個(gè)簡單的例子
// 原SQL
select * from table where a = '1'
// 攔截后的
# 1.查詢總數(shù)SQL:
select count(1) from table where a = '1'
# 2.分頁SQL:
select * from table where a = '1' limit 0,10
這樣我們只需要根據(jù)業(yè)務(wù)邏輯開發(fā)原SQL,不需關(guān)心分頁語法對原SQL的影響,攔截器已經(jīng)為我們處理好了
二、實(shí)現(xiàn)步驟
1.在SpringBoot 的pom文件中引入分頁插件的依賴
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.4.2</version>
</dependency>
如果出現(xiàn)以下報(bào)錯(cuò):
這里說明你現(xiàn)在使用的PageHelper 依賴版本過低,往高提版本就可以
2.修改業(yè)務(wù)邏輯層分頁方法
2.1原始方法
Service層
//查詢符合條件的總條數(shù)
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);
mapper / dao層
//查詢符合條件的總條數(shù)
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);
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>
//查詢符合條件的總條數(shù)
<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>
原始方法代碼復(fù)雜
2.2使用分頁插件提供的方法
Service層
// 分頁插件分頁
// 設(shè)置分頁參數(shù)
PageHelper.startPage(page,pageSize);
// PageHelper.startPage() 后直接跟查詢語句
List<Emp> emps = empMapper.selectPage(name, gender, begin, end);
// Page 就是分頁包裝的結(jié)果對象
Page<Emp> p = (Page<Emp>) emps;
// 封裝數(shù)據(jù)
PageBean<Emp> pageBean = new PageBean<>(p.getTotal(),p.getResult());
mapper / dao層
List<Emp> selectPage(String name,Integer gender,LocalDate begin,LocalDate end);
XXXmapper.xml文章來源:http://www.zghlxwxcb.cn/news/detail-847714.html
<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>
附加
文章來源地址http://www.zghlxwxcb.cn/news/detail-847714.html
到了這里,關(guān)于SpringBoot分頁插件(PageHelper)的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!