Mybatis分页插件PageHelper正确的使用方法(网上有2篇不够科学的文章)
今天下午在Mybatis项目中,实现分页。因为我是后加入项目中的,Leader用的是PageHelper这个组件,但是我在实际使用的过程中遇到了2个大问题。
1.http://www.oschina.net/news/53808/mybatis_pagehelper-3-2-2?p=2#comments
在这篇文章中,作者有提到需要增加PageHelper的配置,原话“或者如果你使用Maven,你可以添加如下依赖:”
这句话是有问题的,
这几段插件配置的代码,应该放到Mybatis的config配置文件中,而非Maven。
后来,听Leader说,他在这也被误导了,搞了一天时间吧。
http://www.oschina.net/p/mybatis_pagehelper
作者使用PageHelper的方法不太对,虽然Java后台测试是可以的,但是在FTL中显示的时候,EL表达式不能正常显示。作者的代码:
@Test
public void testPageHelperByStartPage() throws Exception {
String logip = "";
String username = "super";
String loginDate = "";
String exitDate = null;
String logerr = null;
//不进行count查询,第三个参数设为false
PageHelper.startPage(1, 10, false);
//返回结果是Page
//该对象除了包含返回结果外,还包含了分页信息,可以直接按List使用
List logs = sysLoginLogMapper
.findSysLoginLog(logip, username, loginDate, exitDate, logerr);
Assert.assertEquals(10, logs.size());//当第三个参数没有或者为true的时候,进行count查询
PageHelper.startPage(2, 10);
//返回结果是Page
//该对象除了包含返回结果外,还包含了分页信息,可以直接按List使用
Page page = (Page) sysLoginLogMapper
.findSysLoginLog(logip, username, loginDate, exitDate, logerr);
Assert.assertEquals(10, page.getResult().size());
//进行count查询,返回结果total>0
Assert.assertTrue(page.getTotal() > 0);
}如果在Freemarker的FTL页面中,打印${page.pageNum}会报错,大致的意思是“expected a hash,but is a sequence”,
期待是hash类型,但实际上序列,list、ArrayList都算作序列。这个地方情况比较特殊,Page是一个JavaBean,有若干属性,但是他又继承了ArrayList。经实际分析,
Freemarker把这个对象当作了ArrayList,可以直接遍历<#list page as item></#list>。正确的方法应该是:http://www.oschina.net/news/53808/mybatis_pagehelper-3-2-2?p=2#comments
PageHelper.startPage(1, 10);
List list = countryMapper.selectAll();
PageInfo page = new PageInfo(list);
assertEquals(10, list.size());
assertEquals(239, page.getTotal());
3.我的实际代码和效果
${page},
${page.pageNum}
打印结果:com.github.pagehelper.PageInfo@125d70de, 1
关键代码:
public PageInfo list(WithdrawForm form) {
PageHelper.startPage(form.getNumber(), form.getSize());
List<Map<String, Object>> list = withdrawDao.list(form);
PageInfo page = new PageInfo(list);
return page;
}
Leader在从网上寻找方法的时候,正好遇到了和采纳了这些不够科学的方法,他写的程序是可以运行的,有2点原因。
他没有在Maven中配置那个Plugin,而是在Mybatis中。出于其他需要,正好没有直接使用Page对象,而是使用自己组装的Bean。
今天遇到了这2个大问题,特意总结下,希望后来的人,不要再被误导了。
除了PageHelper这个分页插件,我在秒针工作的时候,原秒针Web前端高级工程师 现百度高级工程师,张少龙-默默,
他也自己实现了一个插件,今后再分享出来。
Mybatis分页插件PageHelper正确的使用方法(网上有2篇不够科学的文章)的更多相关文章
- Mybatis分页插件PageHelper正确的用法(网上有2篇不够科学的文章)
今天下午在Mybatis项目中.实现分页.由于我是后加入项目中的,Leader用的是PageHelper这个组件.可是我在实际使用的过程中遇到了2个大问题. 1.p=2#comments" ...
- Mybatis分页插件PageHelper的配置和使用方法
Mybatis分页插件PageHelper的配置和使用方法 前言 在web开发过程中涉及到表格时,例如dataTable,就会产生分页的需求,通常我们将分页方式分为两种:前端分页和后端分页. 前端分 ...
- Mybatis学习---Mybatis分页插件 - PageHelper
1. Mybatis分页插件 - PageHelper说明 如果你也在用Mybatis,建议尝试该分页插件,这个一定是最方便使用的分页插件. 该插件目前支持Oracle,Mysql,MariaDB,S ...
- Mybatis分页插件PageHelper使用
一. Mybatis分页插件PageHelper使用 1.不使用插件如何分页: 使用mybatis实现: 1)接口: List<Student> selectStudent(Map< ...
- Java SSM框架之MyBatis3(三)Mybatis分页插件PageHelper
引言 对于使用Mybatis时,最头痛的就是写分页,需要先写一个查询count的select语句,然后再写一个真正分页查询的语句,当查询条件多了之后,会发现真不想花双倍的时间写count和select ...
- 基于Mybatis分页插件PageHelper
基于Mybatis分页插件PageHelper 1.分页插件使用 1.POM依赖 PageHelper的依赖如下.需要新的版本可以去maven上自行选择 <!-- PageHelper 插件分页 ...
- Mybatis分页插件-PageHelper的使用
转载:http://blog.csdn.net/u012728960/article/details/50791343 Mybatis分页插件-PageHelper的使用 怎样配置mybatis这里就 ...
- (转)淘淘商城系列——MyBatis分页插件(PageHelper)的使用以及商品列表展示
http://blog.csdn.net/yerenyuan_pku/article/details/72774381 上文我们实现了展示后台页面的功能,而本文我们实现的主要功能是展示商品列表,大家要 ...
- springmvc mybatis 分页插件 pagehelper
springmvc mybatis 分页插件 pagehelper 下载地址:pagehelper 4.2.1 , jsqlparser 0.9.5 https://github.com/pagehe ...
随机推荐
- ReactiveSwift源码解析(七) Signal的CombineLatest的代码实现
本篇博客我们就来聊一下combineLatest()的使用以及具体的实现方式.在之前的<iOS开发之ReactiveCocoa下的MVVM>的博客中我们已经聊过combineLatest( ...
- iOS多线程开发之NSOperation - 快上车,没时间解释了!
一.什么是NSOperation? NSOperation是苹果提供的一套多线程解决方案.实际上NSOperation是基于GCD更高一层的封装,但是比GCD更加的面向对象.代码可读性更高.可控性更强 ...
- 使用curl模拟ip和来源进行网站采集的实现方法
对于限制了ip和来源的网站,使用正常的采集方式是不行的.本文将介绍一种方法,使用php的curl类实现模拟ip和来源,实现采集限制ip和来源的网站. 1.设置页面限制ip和来源访问 server.ph ...
- css3-transition过渡属性
transition主要是用于一个元素的一种状态到另一种状态的一个过渡的过程,不能够主动触发,必须依赖于事件,例如hover伪类选择器. 一,transition简写 transition:要过渡的属 ...
- Spring事件解析
首先介绍Spring事件相关类的关系: 其中EventListener与EventObject均是Java SE的范畴,源码如下: package java.util; public interfac ...
- kafka生产实践
最近接触到一个APP流量分析的项目,类似于友盟.涉及到几个C端高并发的接口,这几个接口主要用于C端数据的提交.在没有任何缓冲的情况下,一个接口涉及到5张表的提交.压测的结果很不理想,主要瓶颈就在与RD ...
- 一步一步学习Vue(十)
本篇说一下组件通信的问题,父子组件通信,前面的博客中已有说明,vue也推荐props in,event out:兄弟节点通信如何做呢?官方其实也给出了实现方式,我们以下面的场景来实现一下: 上图中,实 ...
- Java中的24种设计模式与7大原则 (转)
一.创建型模式 1.抽象工厂模式(Abstract factory pattern): 提供一个接口, 用于创建相关或依赖对象的家族, 而不需要指定具体类.2.生成器模式(Builder patter ...
- 基于Hexo搭建博客并部署到Github Pages
基于Hexo搭建博客并部署到Github Pages 之前在简书上写东西,觉得自己还是太浮躁.本来打算用Flask自己写一个,以为是微框架就比较简单,naive.HTML.CSS.JS等都要学啊,我几 ...
- grunt+bower依赖管理
安装bower(必须安装git) npm install bower -g bower按照插件命令 初始化配置 bower init 生成bower.json //如果有bower.json 直接输入 ...