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的更多相关文章

  1. Mybatis的分页插件PageHelper

    Mybatis的分页插件PageHelper 项目地址:http://git.oschina.net/free/Mybatis_PageHelper  文档地址:http://git.oschina. ...

  2. SpringBoot集成MyBatis的分页插件 PageHelper

    首先说说MyBatis框架的PageHelper插件吧,它是一个非常好用的分页插件,通常我们的项目中如果集成了MyBatis的话,几乎都会用到它,因为分页的业务逻辑说复杂也不复杂,但是有插件我们何乐而 ...

  3. Mybatis之分页插件pagehelper的简单使用

    最近从家里回来之后一直在想着减肥的事情,一个月都没更新博客了,今天下午没睡午觉就想着把mybatis的分页插件了解一下,由于上个月重新恢复了系统,之前创建的项目都没了,又重新创建了一个项目. 一.创建 ...

  4. Spring Boot系列教程八: Mybatis使用分页插件PageHelper

    一.前言 上篇博客中介绍了spring boot集成mybatis的方法,基于上篇文章这里主要介绍如何使用分页插件PageHelper.在MyBatis中提供了拦截器接口,我们可以使用PageHelp ...

  5. Spring Boot系列教程十一: Mybatis使用分页插件PageHelper

    一.前言 上篇博客中介绍了spring boot集成mybatis的方法,基于上篇文章这里主要介绍如何使用分页插件PageHelper.在MyBatis中提供了拦截器接口,我们可以使用PageHelp ...

  6. Mybatis的分页插件PageHelper分页失效的原因

    引用博客:个人博客地址:https://alexaccele.github.io/ PageHelper是Mybatis的一个很好的分页插件,但要使用它的分页功能需要注意一下几点 1.导入相关包,例如 ...

  7. Mybatis 的分页插件 PageHelper

    我用的版本是PageHelper-4.1.1.Mybatis-3.3.0 PageHelper 依赖于 jsqlparser-0.9.4.jar   使用方法: 1.根据Mybatis的版本下载对应版 ...

  8. 学习Spring Boot:(八)Mybatis使用分页插件PageHelper

    首先Mybqtis可以通过SQL 的方式实现分页很简单,只要在查询SQL 后面加上limit #{currIndex} , #{pageSize}就可以了. 本文主要介绍使用拦截器的方式实现分页. 实 ...

  9. MyBatis之分页插件(PageHelper)工作原理

      数据分页功能是我们软件系统中必备的功能,在持久层使用mybatis的情况下,pageHelper来实现后台分页则是我们常用的一个选择,所以本文专门类介绍下. PageHelper原理 相关依赖 & ...

随机推荐

  1. Android驱动入门-Led控制+app+ndk库+底层驱动

    硬件平台: FriendlyARM Tiny4412 Cortex-A9 操作系统: UBUNTU 14.04 LTS 时间:2016-09-20  21:56:48 本次实验使用的是 安卓APP + ...

  2. Eclipse仿Visual AssistX 编辑着色插件

    1. 风格下载 http://www.eclipsecolorthemes.org/?view=theme&id=4602 2. 风格的安装与卸载 http://www.cnblogs.com ...

  3. PAT 1019. 数字黑洞 (20)

    给定任一个各位数字不完全相同的4位正整数,如果我们先把4个数字按非递增排序,再按非递减排序,然后用第1个数字减第2个数字,将得到一个新的数字.一直重复这样做,我们很快会停在有"数字黑洞&qu ...

  4. 使用NIFTI指令画nii图像

    ❤ 关于几种显示工具 mricro:显示出来的左右脑是反着的: mricroN,SPM,xjview,BrainNetViewer:显示出的左右脑是正确的,并且对于做过仿射变换的图像可以自动识别并且校 ...

  5. POJ 3259 Wormholes (判负环)

    Wormholes Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 46123 Accepted: 17033 Descripti ...

  6. Codevs 1910递归函数

    1910 递归函数  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 黄金 Gold 题目描述 Description 对于一个递归函数w(a, b, c). 如果a <= ...

  7. 折腾了1周把程序从sqlserver迁移到oracle上了,每折腾一次需要耗费1周时间

    主要花费时间的事情: 1:安装配套的服务器,安装操作系统,安装数据库,配置远程访问等等,一般会耗费1天时间,甚至2天时间,若手头安装盘不齐全,需要耗费更多时间. 2:远程传输安装文件.特别是开发环境等 ...

  8. JUnit4测试简介

    相比于自己写一个测试类,在里面调用调试方法,使用JUnit4进行测试有很多的优点,极大的提高了测试的速度.本文简单介绍如何使用myEclipse10使用JUnit4,方便日后回顾总结. myEclip ...

  9. python数字图像处理(15):霍夫线变换

    在图片处理中,霍夫变换主要是用来检测图片中的几何形状,包括直线.圆.椭圆等. 在skimage中,霍夫变换是放在tranform模块内,本篇主要讲解霍夫线变换. 对于平面中的一条直线,在笛卡尔坐标系中 ...

  10. HomeKit 与老旧设备

    苹果推了HomeKit,已经有很多厂商在做,可以达到Siri控制所有设备的功能. 但是Siri也不是万能的,对人类的语义理解也会产生差错,不过我相信未来这个问题会解决掉.     如果家里有老旧的电视 ...