理解 Mybatis的分页插件 PageHelper
Mybatis + SpringMVC + Maven实现分页查询 (推荐采用的插件是PageHelper)
先看一下之前的这篇博客,这里推荐了 Mybatis 的分页方法。
按照上面的方法设置后,确实实现了分页,可是 对于其原理还不甚理解,对其加以了分析之后,本篇博客,则用来说明使用该插件的过程中产生的疑惑。
java 中的实现代码:
public PageInfo<Users> selectUsersByIsaByPage(Integer isapproval,Integer pageNo,Integer pageSize)
{
pageNo = pageNo == null?1:pageNo;
pageSize = pageSize == null?10:pageSize;
PageHelper.startPage(pageNo, pageSize);
List<Users> list = userDao.selectUsersByIsapproval(isapproval);
//用PageInfo对结果进行包装
PageInfo<Users> page = new PageInfo<Users>(list);
//测试PageInfo全部属性
System.out.println(page.toString());
return page;
}
1、实现
我们只需要使用 PageHelper.startPage(pageNo,pageSize) 函数来指定 pageNo(第几页) 和 pageSize(每页显示几条记录)两个参数,然后调用原来的查询,就进行了分页,最后返回的是list,转换成 PageBean 类型的结果即可,前台就可以根据 PageBean 来取得对应需要的值了
2、关于 PageBean
分页查询结果 返回的是一个 page 对象,而Page 对象 继承自ArrayList,但是如果我们直接返回 ArrayList 的话,比如在 JSON 处理Page 类型的结果时,会被当成 List 来Json 格式化 会丢弃掉 Page 对象的所有扩展属性。为了保留这些属性,所以将分页Page类型装换成我们自己定义的PageBean, 自己定义个没有继承ArrayList 的PageBean ,包含一个List 的属性来保存分页结果。
PageInfo 是插件作者给我们提供的一个参考例子,当然可以直接使用,也可以 根据自己的项目情况,定义一个PageBean来保存分页之后的结果,需要哪些属性,就加入哪些属性。
我只想要 Page 里面的list 就是查询到的对象……
3、PageHelper 的原理是基于 拦截器实现的。
拦截器的配置有两种方式,一种是mybatis 的配置文件中配置,一种是直接在Spring 的配置文件中进行
4、我有一个重要的 bug,暂时还不知道原因
我的项目中使用到了 AOP的,(不确定原因是不是这里)
比如,我有一个对象 dict,对象中有一个属性user来表示当前用户,如果用户不存在,则会去数据库查询。于是 我的分页查询 dict,结果就是拦截器拦截的查询是 用户,结果放在了PageInfo 中,而不仅仅是简单的dict 的分页……
理解 Mybatis的分页插件 PageHelper的更多相关文章
- Mybatis的分页插件PageHelper
Mybatis的分页插件PageHelper 项目地址:http://git.oschina.net/free/Mybatis_PageHelper 文档地址:http://git.oschina. ...
- SpringBoot集成MyBatis的分页插件 PageHelper
首先说说MyBatis框架的PageHelper插件吧,它是一个非常好用的分页插件,通常我们的项目中如果集成了MyBatis的话,几乎都会用到它,因为分页的业务逻辑说复杂也不复杂,但是有插件我们何乐而 ...
- Mybatis之分页插件pagehelper的简单使用
最近从家里回来之后一直在想着减肥的事情,一个月都没更新博客了,今天下午没睡午觉就想着把mybatis的分页插件了解一下,由于上个月重新恢复了系统,之前创建的项目都没了,又重新创建了一个项目. 一.创建 ...
- Spring Boot系列教程八: Mybatis使用分页插件PageHelper
一.前言 上篇博客中介绍了spring boot集成mybatis的方法,基于上篇文章这里主要介绍如何使用分页插件PageHelper.在MyBatis中提供了拦截器接口,我们可以使用PageHelp ...
- Spring Boot系列教程十一: Mybatis使用分页插件PageHelper
一.前言 上篇博客中介绍了spring boot集成mybatis的方法,基于上篇文章这里主要介绍如何使用分页插件PageHelper.在MyBatis中提供了拦截器接口,我们可以使用PageHelp ...
- Mybatis的分页插件PageHelper分页失效的原因
引用博客:个人博客地址:https://alexaccele.github.io/ PageHelper是Mybatis的一个很好的分页插件,但要使用它的分页功能需要注意一下几点 1.导入相关包,例如 ...
- Mybatis 的分页插件 PageHelper
我用的版本是PageHelper-4.1.1.Mybatis-3.3.0 PageHelper 依赖于 jsqlparser-0.9.4.jar 使用方法: 1.根据Mybatis的版本下载对应版 ...
- 学习Spring Boot:(八)Mybatis使用分页插件PageHelper
首先Mybqtis可以通过SQL 的方式实现分页很简单,只要在查询SQL 后面加上limit #{currIndex} , #{pageSize}就可以了. 本文主要介绍使用拦截器的方式实现分页. 实 ...
- MyBatis之分页插件(PageHelper)工作原理
数据分页功能是我们软件系统中必备的功能,在持久层使用mybatis的情况下,pageHelper来实现后台分页则是我们常用的一个选择,所以本文专门类介绍下. PageHelper原理 相关依赖 & ...
随机推荐
- import
避免类名混淆: 区分有包名的类,如果一个源文件引入了两个包中同名的类,那么在使用该类时,不允许省略包名,如引入了tom.jiafei包中的AA类和sun.com包中的AA类,那么程序在使用AA类时必须 ...
- Android Fragment 你应该知道的一切
转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/42628537,本文出自:[张鸿洋的博客] 很久以前写过两篇Fragment的介绍 ...
- Java—Servlet开发
Servlet API中有4个java包: javax.servlet:包含定义Servlet与Servlet容器之间契约的类与接口. javax.servlet.http:包含定义HTTPServl ...
- Javascript备忘复习笔记2
一.函数与形参 1.函数 function abs(x) { if (x >= 0) { return x; } else { return -x; } } alert(abs(-10)); 2 ...
- How to regress out unwanted vectors
Source: http://stats.stackexchange.com/questions/117840/how-to-regress-out-some-variables Answer in ...
- c#描述异常处理语句try、catch、finally执行时的相互关系
try里面是执行代码,其中的代码"可能"产生异常. catch是对产生异常后的处理代码,可以抛出异常,也可以显示异常,也可以弹出某中提示,总之catch里是任何代码都行,如果你知道 ...
- git 找回丢失的commit
From : http://dmouse.iteye.com/blog/1797267 git 的错误操作,导致丢失了重要的commit,真是痛不欲生: 最后通过git神器终于找回了丢失的commit ...
- NOI2018准备Day7
昨天没写,就不补了. 晚上追剧到3点,今天困死...... 上午做了一道水题,然后找一个程序的神奇的错误花了3个小时 下午做了3道递归吧,稍微难一点儿的黄金题就卡了 刚开始学递归时没多做题练练,现在 ...
- 向jboss写入服务器日志
实际开发中,记录日志是常用的功能,jboss默认情况下已经记录了很多运行日志,如果开发人员要手动在server.log中写入日志,可以参考下面的方法: package utils; import ja ...
- Web Worker 是什么鬼?
前言 前端工程师们一定有过这样的体验,当一个页面加载了大量的 js 文件时,用户界面可能会短暂地"冻结".这很好理解,因为 js 是单线程的语言.我们再走的极端点,一段 js 中出 ...