Mybatis分页插件
mybatis的分页插件可以自动根据项目使用的数据库生成对应的分页sql
在执行目标sql之前先拦截(PageInterceptor拦截类)修改对应的sql(添加分页的sql片段)
【例:】select * from xx_tabl
–>select * from xx_tabl limit?,?
–>select count(0) from xx_tabl
引入依赖
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>5.1.2</version>
</dependency>
在mybatis-config.xml
添加分页配置,需要写在settings之后
PageHelper插件4.0.0以后的版本支持自动识别使用的数据库,可以不用配置
<propertyname=“dialect” value=“mysql” />
<plugins>
<!-- com.github.pagehelper为PageHelper类所在包名 -->
<plugin interceptor="com.github.pagehelper.PageInterceptor">
<!--当pageNum<=0时,将pageNum设置为1-->
<!--当pageNum>pages时,将pageNum设置为pages-->
<property name="reasonable" value="true"/>
</plugin>
</plugins>
完整的mybatis-config.xml
如下:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<settings>
<!--<setting name="lazyLoadingEnabled" value="true"/>-->
<setting name="cacheEnabled" value="true"/>
<setting name="aggressiveLazyLoading" value="false"/>
<setting name="lazyLoadTriggerMethods" value="clone"/>
</settings>
<plugins>
<!-- com.github.pagehelper为PageHelper类所在包名 -->
<plugin interceptor="com.github.pagehelper.PageInterceptor">
<!--当pageNum<=0时,将pageNum设置为1-->
<!--当pageNum>pages时,将pageNum设置为pages-->
<property name="reasonable" value="true"/>
</plugin>
</plugins>
</configuration>
然后通过PageInfo
类可以看出,mybatis分页插件已经帮我们做好了分页结果类,我们只需要调用PageInfo(List<T> list)
使用:
xxxServiceImpl
@Autowired
private xxxMapper xxxMapper;
@Override
public PageInfo<xxx> query (QueryObject qo){
//告诉mybatis下面紧跟的查询sql需要分页
PageHelper.startPage(qo.getCurrentPage,qo.getPageSize);
//sql查询
List<xxx> list=xxxMapper.selectForList(qo);
return new PageInfo<xxx>(list);
}