标签:3.0 分页 family 复制 line 通过 多线程 3.3 配置
Mybatis 的分页插件 PageHelper
添加如下依赖:
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>4.1.6</version>
</dependency>
当使用maven中央库中的快照版(带"-SNAPSHOT"
的版本)时,需要在pom.xml中添加如下配置:
<repositories>
<repository>
<id>sonatype-nexus-snapshots</id>
<name>Sonatype Nexus Snapshots</name>
<url>http://oss.sonatype.org/content/repositories/snapshots</url>
<releases>
<enabled>false</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
2. 在Mybatis配置mybatis-config.xml中配置拦截器插件:
plugins插件的配置在 settings之后 在environments之前
<!--
plugins在配置文件中的位置必须符合要求,否则会报错,顺序如下:
properties?, settings?,
typeAliases?, typeHandlers?,
objectFactory?,objectWrapperFactory?,
plugins?,
environments?, databaseIdProvider?, mappers?
-->
<plugins>
<!-- com.github.pagehelper为PageHelper类所在包名 -->
<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="false"/>
<!-- 3.5.0版本可用 - 为了支持startPage(Object params)方法 -->
<!-- 增加了一个`params`参数来配置参数映射,用于从Map或ServletRequest中取值 -->
<!-- 可以配置pageNum,pageSize,count,pageSizeZero,reasonable,orderBy,不配置映射的用默认值 -->
<!-- 不理解该含义的前提下,不要随便复制该配置 -->
<property name="params" value="pageNum=pageHelperStart;pageSize=pageHelperRows;"/>
<!-- 支持通过Mapper接口参数来传递分页参数 -->
<property name="supportMethodsArguments" value="false"/>
<!-- always总是返回PageInfo类型,check检查返回类型是否为PageInfo,none返回Page -->
<property name="returnPageInfo" value="none"/>
</plugin>
</plugins>
测试
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(value = {"classpath:spring/spring-*.xml"})
public class TestPageHelper {
@Resource
private TbItemMapper itemMapper;
@Test
public void testPageHelper() throws Exception {
//2、设置分页,第104页,每页显示30条
PageHelper.startPage(104, 30);
//3、执行查询
TbItem item = new TbItem();
List<TbItem> list = itemMapper.selectBySelective(item);
//4、取分页后结果
PageInfo<TbItem> pageInfo = new PageInfo<>(list);
int pageNum = pageInfo.getPageNum();
System.out.println("当前是第几页:" + pageNum);
int pageSize = pageInfo.getPageSize();
System.out.println("当前页最多显示几条:" + pageSize);
int size = pageInfo.getSize();
System.out.println("当前页有几条记录:" + size);
int startRow = pageInfo.getStartRow();
System.out.println("当前页开始记录:" + startRow);
int endRow = pageInfo.getEndRow();
System.out.println("当前页最后一条记录:" + endRow);
long total = pageInfo.getTotal();
System.out.println("总共查出来多少条记录:" + total);
int pages = pageInfo.getPages();
System.out.println("总共有多少页:" + pages);
}
}
结果
当前是第几页:104
当前页最多显示几条:30
当前页有几条记录:6
当前页开始记录:3091
当前页最后一条记录:3096
总共查出来多少条记录:3096
总共有多少页:104
标签:3.0 分页 family 复制 line 通过 多线程 3.3 配置
原文地址:http://www.cnblogs.com/winner-0715/p/6124099.html