Mybatis分页插件PageHelper使用

SSM项目中使用

  1. 导入依赖
<!-- 分页插件 -->
<dependency>
   <groupId>com.github.pagehelper</groupId>
   <artifactId>pagehelper</artifactId>
   <version>4.1.6</version>
</dependency>
  1. 配置分页插件

配置分页插件有两种方式:

1. 在 mybatis-config.xml 中使用

<plugins>
  <!--分页-->
  <plugin interceptor="com.github.pagehelper.PageHelper">
    <!-- 告诉分页插件是哪个数据库, Oracle,Mysql,MariaDB,SQLite,Hsqldb,PostgreSQL六种数据库-->
    <property name="dialect" value="mysql"/>
  </plugin>
</plugins>

在 spring-dao.xml 中读取 mybatis-config.xml 配置文件

<!--sqlSessionFactory-->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
    <!-- 注入数据源 -->
    <property name="dataSource" ref="dataSource"/>
    <!-- 配置MyBaties全局配置文件 -->
    <property name="configLocation" value="classpath:/mybatis/mybatis-config.xml"/>
    <!-- 扫描mapper文件 -->
    <property name="mapperLocations" value="classpath:mapper/*Mapper.xml"/>
    <!-- 扫描实体类 使用别名 -->
    <property name="typeAliasesPackage" value="com.learn.pojo"/>
</bean>

2. 在 spring-dao.xml 中使用

<!--sqlSessionFactory-->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
    <!-- 注入数据源 -->
    <property name="dataSource" ref="dataSource"/>
    <!-- 配置MyBaties全局配置文件 -->
    <property name="configLocation" value="classpath:/mybatis/mybatis-config.xml"/>
    <!-- 扫描mapper文件 -->
    <property name="mapperLocations" value="classpath:mapper/*Mapper.xml"/>
    <!-- 扫描实体类 使用别名 -->
    <property name="typeAliasesPackage" value="com.learn.pojo"/>
    <!--配置分页插件-->
    <property name="plugins">
    	<array>
        	<bean class="com.github.pagehelper.PageHelper">
           		<property name="properties">
           			<!-- config params as the following -->
        			<value>
            			dialect=mysql
            		</value>
       			</property>
    		</bean>
   		 </array>
    </property>
</bean>

注:如果导入的依赖版本为 5.0 以上,插件须改成 com.github.pagehelper.PageInterceptor

  1. 使用 PageHelper
PageHelper.startPage(pageNum, pageSize);
// 查询
List<Shop> shopList = shopMapper.queryShopList(shopCondition);
PageInfo<Shop> pageInfo = new PageInfo<>(shopList);

分页信息都已保存在 pageInfo 对象中,可以按自己的需求从pageInfo中取出对应的信息返回给前台

SpringBoot项目中使用

  1. 导入依赖
<!-- 分页插件 -->
<dependency>
    <groupId>com.github.pagehelper</groupId>
    <artifactId>pagehelper-spring-boot-starter</artifactId>
    <version>1.2.7</version>
</dependency>
  1. 在 application.yml 配置 pagehelper
# 分页插件
pagehelper:
    helper-dialect: mysql
  1. 使用 PageHelper
Page page = PageHelper.startPage(pageNum, pageSize, true);
// 查询
List<Role> roles = this.roleMapper.listAll(role);
PageInfo<Role> pageInfo = new PageInfo<>(roles);

注:PageInfo pageInfo = new PageInfo<>(roles) 这行代码可以省略,分页的基本信息都已保存在 page 对象中,可以自己自定义一个VO,通过page.get…()方法取出,然后把自定义VO返回。
Mybatis分页插件PageHelper使用
Mybatis分页插件PageHelper使用