SSM项目中使用
- 导入依赖
<!-- 分页插件 -->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>4.1.6</version>
</dependency>
- 配置分页插件
配置分页插件有两种方式:
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
- 使用 PageHelper
PageHelper.startPage(pageNum, pageSize);
// 查询
List<Shop> shopList = shopMapper.queryShopList(shopCondition);
PageInfo<Shop> pageInfo = new PageInfo<>(shopList);
分页信息都已保存在 pageInfo 对象中,可以按自己的需求从pageInfo中取出对应的信息返回给前台
SpringBoot项目中使用
- 导入依赖
<!-- 分页插件 -->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.2.7</version>
</dependency>
- 在 application.yml 配置 pagehelper
# 分页插件
pagehelper:
helper-dialect: mysql
- 使用 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返回。