Mybatis分页插件PageHelper的使用
来源:互联网 发布:贝斯内录用什么软件 编辑:程序博客网 时间:2024/05/21 09:44
不知道你发现了没有,Mybatis基于内存的分页功能很弱,因为它是查出所有的记录再按偏移量和limit取结果。在大数据量的情况下这样的分页基本上是没用的。而按照以前的做法,我们通常是封装一个分页的工具类的,一般是selectCount(有多少条记录)和selectPage(当前页的索引,一般从0开始)才能实现分页功能。但这里Mybatis提供了一个通用的分页插件PageHelper,这里就简单介绍一个这个分页插件PageHelper的使用。
首先在pom文件中添加依赖
<dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper</artifactId> <version>4.0.0</version></dependency><dependency> <groupId>com.github.miemiedev</groupId> <artifactId>mybatis-paginator</artifactId> <version>1.2.5</version></dependency><dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-io</artifactId> <version>1.3.2</version></dependency>
添加配置文件SqlPageHelper.xml
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE configurationPUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd"><!-- 配置管理器 --><configuration><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="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>
在Mybatis配置文件中配置加载Mybatis全局配置文件
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="dataSource" /> <!-- 加载mybatis的全局配置文件 --> <property name="configLocation" value="classpath:SqlPageHelper.xml" /></bean>
service实现
public List<UserInfo> queryUserList() { List<UserInfo> userInfoList = userInfoMapper.queryUserInfoList(); return userInfoList;}
controller层
@SuppressWarnings("unchecked")@RequestMapping(value = "/userList", method = { RequestMethod.POST, RequestMethod.GET})public ModelAndView userList(HttpServletRequest request, HttpServletResponse response) throws Exception{ String pageNum = request.getParameter("pageNum"); String pageSize = request.getParameter("pageSize"); int beginnum = 1; int beginsize = 10; if(pageNum != null && !"".equals(pageNum)){ beginnum = Integer.parseInt(pageNum); } if(pageSize != null && !"".equals(pageSize)){ beginsize = Integer.parseInt(pageSize); } String sortString = "id.desc"; Order.formString(sortString); PageHelper.startPage(beginnum, beginsize); List<UserInfo> userInfoList = userInfoService.queryUserInfoList(); PageInfo<UserInfo> pagehelper = new PageInfo<UserInfo>(userInfoList); //返回ModelAndView ModelAndView modelAndView = new ModelAndView(); modelAndView.addObject("pagehelper", pagehelper); modelAndView.setViewName("userList"); return modelAndView;}
1 0
- 【MyBatis】MyBatis分页插件PageHelper的使用
- 【MyBatis】MyBatis分页插件PageHelper的使用
- 【MyBatis】MyBatis分页插件PageHelper的使用
- Mybatis中分页插件PageHelper的使用
- Mybatis分页插件-PageHelper的使用
- mybatis分页插件PageHelper的使用
- Mybatis分页插件PageHelper的使用
- MyBatis分页插件PageHelper的使用
- Mybatis分页插件PageHelper的使用
- Mybatis分页插件PageHelper的简单使用
- MyBatis分页插件PageHelper的使用
- Mybatis分页插件-PageHelper(5.0)的使用
- MyBatis分页插件PageHelper的使用
- MyBatis分页插件PageHelper的使用
- mybatis分页插件PageHelper的使用
- MyBatis分页插件PageHelper的使用
- Mybatis分页插件-PageHelper的使用
- Mybatis分页插件PageHelper的使用
- 文章标题 caffe训练mnist数据集
- Oracle11G卸载
- 数据结构实验之查找二:平衡二叉树
- spark java 编程
- HDU2546饭卡//01背包问题
- Mybatis分页插件PageHelper的使用
- 汽车仪表盘用户界面的历史性革新|品创设计
- Breeze库API总结(Spark线性代数库)
- 中科爱讯串口WiFi探针TZ001使用方法
- 项目的报错解决
- MySQL之权限管理
- 生产者消费者的实现与思考
- LeetCode 169 Majority Element题解
- OpenCV学习笔记五(2016年12月5日)Opencv基本架构分析