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. NVIDIA显卡设置

    在玩3D游戏时,因为我的显卡不是特别给力,所以针对性能做出牺牲质量换取性能的调整. 简单设置 简单的方法是,3D设置-通过预览调整图像设置,根据偏重点来设置平衡:性能或者质量. 高级设置 如果你想自行 ...

  2. Could not load file or assembly 'MySql.Data.CF,

    Could not load file or assembly 'MySql.Data.CF, Version=6.4.4.0, Culture=neutral, PublicKeyToken=c56 ...

  3. JMeter学习(四)参数化

    JMeter也有像LR中的参数化,本篇就来介绍下JMeter的参数化如何去实现. 参数化:录制脚本中有登录操作,需要输入用户名和密码,假如系统不允许相同的用户名和密码同时登录,或者想更好的模拟多个用户 ...

  4. C#的匿名方法

    匿名方法是在初始化委托时内联声明的方法. 例如下面这两个例子: 不使用匿名方法的委托: using System; using System.Collections.Generic; using Sy ...

  5. iOS UITableView 分割线从零开始

    第一种(不自己画线): 代码如下 // tableView的分割线从零开始 -(void)viewDidLayoutSubviews { if ([self.tableView respondsToS ...

  6. JavaScript Boolean 对象

    JavaScript Boolean 对象 Boolean 对象 Boolean 对象用于转换一个不是 Boolean 类型的值转换为 Boolean 类型值 (true 或者false). Bool ...

  7. ajax异步举例

    SelectInfo = { release_url: "/compatible/getReleaseFor", project_url: "/compatible/ge ...

  8. php 中的curl

    ① curl上传文件 <?php $postData=array( 'name'=>'123', 'upload'=>'@E:/wamp/www/function/result.zi ...

  9. C#事件快捷设置

    注解:本文摘自网络 C# 自定义带自定义参数的事件方法 C# 自定义带自定义参数的事件 需要经过以下几个步骤: 1.自定义事件参数 :要实现自定义参数的事件,首先要自定义事件参数.该参数是个类.继承自 ...

  10. BZOJ 1087 【SCOI2005】 互不侵犯King

    Description 在N×N的棋盘里面放K个国王,使他们互不攻击,共有多少种摆放方案.国王能攻击到它上下左右,以及左上左下右上右下八个方向上附近的各一个格子,共8个格子. Input 只有一行,包 ...