# mybatis13:PageHelper插件
pageHelper官方文档 (opens new window)
# 导航
# 分页查询的麻烦事
- 当前页数据查询- select * from tab limit 0,10
- 总记录数的查询- select count(*) from tab
- 程序计算总页数、上一页页码、下一页页码
# PageHelper使用流程
- maven引入PageHelper与jsqlparser
- mybatis-config.xml增加Plugin配置
- 代码中使用PageHelper.startPage()自动分页
# maven引用PageHelper与jsqlparser
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>5.2.0</version>
</dependency>
<dependency>
<!--sql的解析器-->
<groupId>com.github.jsqlparser</groupId>
<artifactId>jsqlparser</artifactId>
<version>3.1</version>
</dependency>
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
# mybatis-config.xml增加Plugin配置
<!--
plugins在配置文件中的位置必须符合要求,否则会报错,顺序如下:
properties?, settings?,
typeAliases?, typeHandlers?,
objectFactory?,objectWrapperFactory?,
plugins?,
environments?, databaseIdProvider?, mappers?
-->
<plugins>
<plugin interceptor="com.github.pagehelper.PageInterceptor">
<!--详情请参照:https://pagehelper.github.io/docs/howtouse/-->
<property name="helperDialect" value="mysql"/>
<property name="reasonable" value="false"/>
</plugin>
</plugins>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# mapper.xml该怎么写还怎么写
<select id="selectPage" resultType="com.torey.mybatis.entity.TGoodsEntity">
select * from t_goods where current_price < #{value}
</select>
1
2
3
2
3
# java文件使用
@Test
public void testSelectPage(){
SqlSession sqlSession=null;
try {
sqlSession= MyBatisUtils.openSession();
//startPage方法会自动将下一次查询进行分页
PageHelper.startPage(1, 10);
Page page= (Page)sqlSession.selectList("goods.selectPage", 1000);
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<TGoodsEntity> result = page.getResult();
System.out.println("当前数据:"+result);
} catch (Exception e) {
e.printStackTrace();
} finally {
if (null!=sqlSession) {
MyBatisUtils.closeSession(sqlSession);
}
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# 导航,上一页,下一页
12OneToMany对象关联查询
14MyBatis配置C3P0连接池