PageHelper 分页插件
分页查询
假设数据表很大,你需要将数据库分成N页, 一页10条数据,你需要查询第100页的10条数据。如果直接写死在 SQL 语句中则会很死板,而且扩展性不强。
这时候如果有一个分页的插件, 可以按照预定的分页规则,一页多少条数据,查询第几页,那么就会非常方便。 PageHelper 就是这样一个插件。
Maven 中添加依赖
在 pom.xml 中添加下面两个标签:
<!-- page helper 插件 -->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>5.1.10</version>
</dependency>
<dependency>
<groupId>com.github.jsqlparser</groupId>
<artifactId>jsqlparser</artifactId>
<version>2.0</version>
</dependency>
mybatis-config.xml 下增加 plugin 配置
D:\intro_Java\MyBatis\src\main\resources\mybatis-config.xml 下增加 <plugin> 标签:
<!-- pagehelper 插件 -->
<plugins>
<plugin interceptor="com.github.pagehelper.PageInterceptor">
<!-- 设置数据库类型 -->
<property name="helperDialect" value="mysql"/>
<!-- 分页合理化 -->
<property name="reasonable" value="true"/>
</plugin>
</plugins>
goods.xml 增加一个测试标签
D:\intro_Java\MyBatis\src\main\resources\mappers\goods.xml中增加下面这个标签:
<select id="selectPage" resultType="indi.chester.mybatis.entity.Goods" >
SELECT * FROM babytun.t_goods WHERE current_price < 1000
</select>
调用 PageHelper
MyBatis\src\test\java\MyBatisTest.java 中添加下面这个测试方法:
@Test
public void testPageHelper () throws Exception{
SqlSession sqlSession=null;
try {
sqlSession=MyBatisUtils.openSession();
//查询第二页,每一页有10条数据
PageHelper.startPage(2,10);
Page<Goods> page = (Page) sqlSession.selectList("goods.selectPage");
System.out.println("总页数 : "+page.getPages());
System.out.println("总记录数 : "+page.getTotal());
System.out.println("开始行号 : "+page.getStartRow());
System.out.println("结束行号 : "+page.getEndRow());
System.out.println("当前页码 : "+page.getPageNum());
List<Goods> pageData = page.getResult();//当前页数据
for (Goods g : pageData){
System.out.println(g.getTitle());
}
}catch (Exception e){
e.printStackTrace();
throw e;
}finally {
MyBatisUtils.closeSession(sqlSession);
}
}
运行结果:
16:01:35:367 [main] DEBUG goods.selectPage_COUNT -==> Preparing: SELECT count(0) FROM babytun.t_goods WHERE current_price < 1000
16:01:35:397 [main] DEBUG goods.selectPage_COUNT -==> Parameters:
16:01:35:436 [main] DEBUG goods.selectPage_COUNT -<== Total: 1
16:01:35:443 [main] DEBUG goods -Cache Hit Ratio [goods]: 0.0
16:01:35:443 [main] DEBUG goods.selectPage -==> Preparing: SELECT * FROM babytun.t_goods WHERE current_price < 1000 LIMIT ?, ?
16:01:35:444 [main] DEBUG goods.selectPage -==> Parameters: 10(Integer), 10(Integer)
16:01:35:449 [main] DEBUG goods.selectPage -<== Total: 10
总页数 : 181
总记录数 : 1808
开始行号 : 10
结束行号 : 20
当前页码 : 2
兰多 升级版时尚妈咪包 桔色
康泰 家用智能胎心仪 分体探头操作方便 外放聆听 与家人分享宝宝心声
惠氏 启赋(Wyeth illuma)有机1段 900g (0-6月)婴儿配方奶粉(罐装)
惠氏 启赋(Wyeth illuma)有机2段900g(6-12月)较大婴儿配方奶粉(罐装)
惠氏启赋3段(12-36个月)幼儿配方奶粉900g *2罐
爱他美婴幼儿配方奶粉pre段800g 铂金版
【日本】尤妮佳MOONY 纸尿裤S84*3包
【日本】日本Moony XL38(男)拉拉裤*4包
【日本】Moony尤妮佳婴儿拉拉裤(男)L44片*3包
【日本】Moony尤妮佳婴儿裤型拉拉裤(女)L44*3包
Last updated