一:maven引入PageHelper与jsparser
<!--分页pagehelper-->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>5.2.0</version>
</dependency>
<!--jsqlparser 是pagehelper的底层依赖-->
<dependency>
<groupId>com.github.jsqlparser</groupId>
<artifactId>jsqlparser</artifactId>
<version>3.2</version>
</dependency>
二:配置文件配置分页
1、mybatis-config.xml增加Plugin配置
<!--分页配置-->
<plugins>
<plugin interceptor="com.github.pagehelper.PageInterceptor">
<!--设置数据库类型-->
<property name="helperDialect" value="mysql"/>
<!--分页合理化-->
<property name="reasonable" value="true"/>
</plugin>
</plugins>
2、springboot的application.yml配置
# mybatis配置
mybatis:
configuration:
map-underscore-to-camel-case: true
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
三:代码使用PageHelper.startPage()自动分页;测试用例
/**
* 分页查询
* @throws Exception
*/
@Test
public void testSelectPage() throws Exception{
SqlSession sqlSession = null;
try{
sqlSession = MybatisUtils.openSession();
//startPage方法会自动将下一次查询进行分页
PageHelper.startPage(1,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());
//方式1:返回当前分页对象
List<Goods> data = page.getResult();
for (Goods g : data){
System.out.println(g.getTitle());
}
//方式2:获取分页结果
PageInfo pageInfo = new PageInfo(page);
if (pageInfo.getList().size()>0) {
System.out.println(pageInfo.getEndRow());
} else {
System.out.println("null");
}
}catch (Exception e){
throw e;
}finally {
MybatisUtils.closeSession(sqlSession);
}
}
四:goods.xml
<!--分页查询-->
<select id="selectPage" resultType="com.imooc.mybatis.entity.Goods">
select * from t_goods where current_price < 1000
</select>
五:goods实体类
package com.imooc.mybatis.entity;
import java.util.List;
/**
* 商品类
*/
public class Goods {
//商品编号
private Integer goodsId;
//标题
private String title;
//子标题
private String subTitle;
//原始价格
private Flo