Mybatis的分页插件PageHelper4.1.6的使用
来源:互联网 发布:sql不包含某个字符串 编辑:程序博客网 时间:2024/06/03 13:30
1、引入jar包
这里以maven为例(如果下载jar,还需要下载pageHelper的依赖com.github.jsqlparser):
<dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper</artifactId> <version>4.1.6</version></dependency>
2、添加配置
在mybatis的全局配置文件里<configuration>标签下添加下面的配置
<!-- 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>
3、编写代码
下面是Junit单元测试的简单实现分页查询的代码
package com.taotao.PageHelper;import java.util.ArrayList;import java.util.List;import org.apache.ibatis.session.SqlSession;import org.apache.ibatis.session.SqlSessionFactory;import org.junit.Test;import org.junit.runner.RunWith;import org.mybatis.spring.SqlSessionFactoryBean;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.test.context.ContextConfiguration;import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;import com.github.pagehelper.Page;import com.github.pagehelper.PageHelper;import com.github.pagehelper.PageInfo;import com.taotao.mapper.TbItemMapper;import com.taotao.pojo.TbItem;import com.taotao.pojo.TbItemExample;import com.taotao.pojo.TbItemExample.Criteria;//自动加载spring容器@RunWith(SpringJUnit4ClassRunner.class)// 告诉junit spring的配置文件@ContextConfiguration({ "classpath:spring/applicationContext-dao.xml","classpath:spring/applicationContext-service.xml" })public class TestPageHelper {@Autowiredprivate TbItemMapper itemMapper;/** * 无条件分页查询测试 * * @Title:函数 TestPageHelper * @Description:Comment for non-overriding methods * @author 张颖辉 * @date 2016年9月19日下午9:54:36 */@Testpublic void TestPageHelper() {// 执行查询并分页TbItemExample itemExample = new TbItemExample();// 分页处理PageHelper.startPage(2, 10);// 如果没有这行,后面就会取出所有的商品list// 执行查询语句获取商品列表List<TbItem> items = itemMapper.selectByExample(itemExample);// 打印返回的商品列表for (int i = 0; i < items.size(); i++) {System.out.println((i + 1) + ":" + items.get(i).getTitle());}// 获取分页信息PageInfo<TbItem> pageInfo = new PageInfo<TbItem>(items);long total = pageInfo.getTotal();System.out.println("共有商品:" + total);}@AutowiredSqlSessionFactoryBean sqlSessionFactory;/** * 条件分页查询测试 * * @Title:函数 TestPageHelper2 * @Description:Comment for non-overriding methods * @author 张颖辉 * @date 2016年9月19日下午9:54:55 * @throws Exception */@Testpublic void TestPageHelper2() throws Exception {/** * 另外一种注入的方式,通过SqlSessionFactoryBean拿到bean(比较落后,已经不常用) */// SqlSessionFactory sessionFactory = sqlSessionFactory.getObject();// SqlSession sqlSession = sessionFactory.openSession();// TbItemMapper itemMapper = sqlSession.getMapper(TbItemMapper.class);System.out.println("测试获取数据库会话对象Session:" + sqlSessionFactory.getObject().openSession());TbItemExample itemExample = new TbItemExample();Criteria criteria = itemExample.createCriteria();criteria.andIdLessThan(700000L);// criteria.andPriceEqualTo(49800L);// 获取第1页,10条内容,默认查询总数countPageHelper.startPage(1, 10);// 紧跟着的第一个select方法会被分页List<TbItem> items = itemMapper.selectByExample(itemExample);// 打印返回的商品列表for (int i = 0; i < items.size(); i++) {System.out.println((i + 1) + ":" + items.get(i).getTitle());}// 获取分页信息PageInfo<TbItem> pageInfo = new PageInfo<TbItem>(items);long total = pageInfo.getTotal();System.out.println("共有商品:" + total);}}
注意:分页插件对逆向工程生成的代码支持不好(3.4.2版本),不能对有查询条件的查询分页,会抛异常。
但是后来使用4.1.6可以支持逆向工程。
官方文档:包含更多配置以及注意事
0 0
- Mybatis的分页插件PageHelper4.1.6的使用
- mybatis分页插件的使用
- 【MyBatis】MyBatis分页插件PageHelper的使用
- 【MyBatis】MyBatis分页插件PageHelper的使用
- 【MyBatis】MyBatis分页插件PageHelper的使用
- mybatis的分页插件
- Mybatis的分页插件
- Mybatis的分页插件
- Mybatis中分页插件PageHelper的使用
- Mybatis分页插件-PageHepler的使用
- Mybatis分页插件-PageHelper的使用
- mybatis分页插件PageHelper的使用
- Mybatis分页插件PageHelper的使用
- 【SSM 5】Mybatis分页插件的使用
- MyBatis分页插件PageHelper的使用
- Mybatis分页插件PageHelper的使用
- Mybatis分页插件PageHelper的简单使用
- MyBatis分页插件PageHelper的使用
- Python中self的理解(一)
- Codeforces-327A-Flipping Game
- MapReduce概念以及运行机制
- freeMarker学习(三)
- 集合的子集
- Mybatis的分页插件PageHelper4.1.6的使用
- BZOJ 1367 [Baltic2004]sequence 解题报告
- poj 1363 Rails(栈)
- lua常用函数
- 【bzoj 1218】 [HNOI2003]激光炸弹
- Openvswitch原理与代码分析(5): 内核中的流表flow table操作
- ARM7三级流水线详解
- Codeforces-189A-Cut Ribbon
- Java运算符小结