PageHelper分页插件无效及其正确使用方法
·
首先讲解插件的正确使用方法
1.maven的pom.xml中配置pagehelper,引入它的jar包
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>5.0.0</version>
</dependency>
2.添加一个分页插件的配置文件,我的名字叫在spring-mybatis-pageHelper.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>
<plugins>
<plugin interceptor="com.github.pagehelper.PageHelper">
<!--指明数据库 4.0.0以后不需要设置此属性-->
<property name="dialect" value="mysql"/>
<!-- 该参数默认为false -->
<!-- 设置为true时,会将RowBounds第一个参数offset当成pageNum页码使用 -->
<!-- 和startPage中的pageNum效果一样-->
<property name="offsetAsPageNum" value="true"/>
<!-- 该参数默认为false -->
<!-- 设置为true时,使用RowBounds分页会进行count查询 -->
<property name="rowBoundsWithCount" value="true"/>
<!-- 设置为true时,如果pageSize=0或者RowBounds.limit = 0就会查询出全部的结果 -->
<!-- (相当于没有执行分页查询,但是返回结果仍然是Page类型)-->
<property name="pageSizeZero" value="true"/>
<!-- 3.3.0版本可用 - 分页参数合理化,默认false禁用 -->
<!-- 启用合理化时,如果pageNum<1会查询第一页,如果pageNum>pages会查询最后一页 -->
<!-- 禁用合理化时,如果pageNum<1或pageNum>pages会返回空数据 -->
<property name="reasonable" value="true"/>
<!-- 3.5.0版本可用 - 为了支持startPage(Object params)方法 -->
<!-- 增加了一个`params`参数来配置参数映射,用于从Map或ServletRequest中取值 -->
<!-- 可以配置pageNum,pageSize,count,pageSizeZero,reasonable,orderBy,不配置映射的用默认值 -->
<!-- 不理解该含义的前提下,不要随便复制该配置 -->
<property name="params" value="pageNum=start;pageSize=limit;"/>
<!-- 支持通过Mapper接口参数来传递分页参数 -->
<property name="supportMethodsArguments" value="true"/>
<!-- always总是返回PageInfo类型,check检查返回类型是否为PageInfo,none返回Page -->
<property name="returnPageInfo" value="check"/>
</plugin>
</plugins>
</configuration>
注意,这是所有属性的配置,注意注意,有些属性是版本对应的,如果你是高版本的PageHelper,配置了低版本的属性,则会导致分页失效,比如4.0.0版本的指明数据库属性,因为我引用的是5.0.0的版本,如果在配置文件中声明了此属性,则导致分页无效。比如像这样:
分页失效
3.在sqlSessionFactory中指定配置文件
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<!-- 自动扫描mapping.xml文件 -->
<property name="mapperLocations" value="classpath:com/myr/ssms/mapper/xml/*.xml">
</property>
<!--设置pageHelper-->
<property name="configLocation" value="classpath:spring-mybatis-pageHelper.xml">
</property>
/bean>
在web.xml中指定spring-mybatis.xml,我想不必多说,如下图
此处如果多指定了pageHelper的配置文件,也会导致pageHlper分页无效,无解
4.在控制层编写查询代码
当然你的服务层和mapper层都应该编写相应的查询方法,此处不再赘述
/**
* 查询员工数量(分页查询)
* @return
*/
@RequestMapping("/users")
public String getEmps(@RequestParam(value="pn",defaultValue="1")Integer pn,
Model model) {
//这不是一个分页查询
//引入PageHepler分页插件 https://github.com/pagehelper/Mybatis-PageHelper
//在查询之前调用,传入页码,以及每页的大小 //在startPage后面紧跟的这个查询就是分页查询
PageHelper.startPage(pn,5);
List<User> emps = userServiceImplement.getAllUsers();
//使用pageInfo包装查询后的结果,只要将pageInfo交给页面就行了
//封装了详细的分页信息,包括有我们查询出来的数据
PageInfo<User> page = new PageInfo<User>(emps,5);
model.addAttribute("pageInfo",page); //用model返回给页面数据
return "list";
}
5.PageHelper的许多属性,参阅官方文档,地址:https://github.com/pagehelper/Mybatis-PageHelper/blob/master/wikis/zh/HowToUse.md
更多推荐
已为社区贡献3条内容
所有评论(0)