今天下午在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说,他在这也被误导了,搞了一天时间吧。

  1. 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篇不够科学的文章)的更多相关文章

  1. Mybatis分页插件PageHelper正确的用法(网上有2篇不够科学的文章)

    今天下午在Mybatis项目中.实现分页.由于我是后加入项目中的,Leader用的是PageHelper这个组件.可是我在实际使用的过程中遇到了2个大问题. 1.p=2#comments" ...

  2. Mybatis分页插件PageHelper的配置和使用方法

     Mybatis分页插件PageHelper的配置和使用方法 前言 在web开发过程中涉及到表格时,例如dataTable,就会产生分页的需求,通常我们将分页方式分为两种:前端分页和后端分页. 前端分 ...

  3. Mybatis学习---Mybatis分页插件 - PageHelper

    1. Mybatis分页插件 - PageHelper说明 如果你也在用Mybatis,建议尝试该分页插件,这个一定是最方便使用的分页插件. 该插件目前支持Oracle,Mysql,MariaDB,S ...

  4. Mybatis分页插件PageHelper使用

    一. Mybatis分页插件PageHelper使用  1.不使用插件如何分页: 使用mybatis实现: 1)接口: List<Student> selectStudent(Map< ...

  5. Java SSM框架之MyBatis3(三)Mybatis分页插件PageHelper

    引言 对于使用Mybatis时,最头痛的就是写分页,需要先写一个查询count的select语句,然后再写一个真正分页查询的语句,当查询条件多了之后,会发现真不想花双倍的时间写count和select ...

  6. 基于Mybatis分页插件PageHelper

    基于Mybatis分页插件PageHelper 1.分页插件使用 1.POM依赖 PageHelper的依赖如下.需要新的版本可以去maven上自行选择 <!-- PageHelper 插件分页 ...

  7. Mybatis分页插件-PageHelper的使用

    转载:http://blog.csdn.net/u012728960/article/details/50791343 Mybatis分页插件-PageHelper的使用 怎样配置mybatis这里就 ...

  8. (转)淘淘商城系列——MyBatis分页插件(PageHelper)的使用以及商品列表展示

    http://blog.csdn.net/yerenyuan_pku/article/details/72774381 上文我们实现了展示后台页面的功能,而本文我们实现的主要功能是展示商品列表,大家要 ...

  9. springmvc mybatis 分页插件 pagehelper

    springmvc mybatis 分页插件 pagehelper 下载地址:pagehelper 4.2.1 , jsqlparser 0.9.5 https://github.com/pagehe ...

随机推荐

  1. 使用intelliJ创建 spring boot + gradle + mybatis站点

    Spring boot作为快速入门是不错的选择,现在似乎没有看到大家写过spring boot + gradle + mybatis在intellij下的入门文章,碰巧.Net同事问到,我想我也可以写 ...

  2. kali切换字符界面模式和切换图形界面模式

    我也是走了很多弯路,下面把正确的命令写出来,网上的不是说不正确,是linux命令做出了更改 Systemd是一种新的linux系统服务管理器 它替代了init, 直接上命令吧! 切换至字符界面 sud ...

  3. 利用base64函数,对文件进行转码加密

    设计此种编码是为了使二进制数据可以通过非纯 8-bit 的传输层传输,例如电子邮件的内容就是通过base64转码后传输的.Base64-encoded后, 数据要比原始数据多占用 33% 左右的空间. ...

  4. 大数据Python学习大纲

    最近公司在写一个课程<大数据运维实训课>,分为4个部分,linux实训课.Python开发.hadoop基础知识和项目实战.这门课程主要针对刚从学校毕业的学生去应聘时不会像一个小白菜一样被 ...

  5. 微信小程序探索(一)

    一.小程序到底是个什么鬼? 现在Android系统越用越卡的现状很头疼,手机上再也不想装太多的App,而市面上层出不穷的各种应用,有时又是我们需要用到的,怎么办呢!!微信小程序就是一种不需要下载安装即 ...

  6. spring+springmvc+mybaties整合实例

    spring+springmvc+mybaties即SSM框架整合在ecpliseee中开发:很么多西都是只有只有自己上手做,才会懂.昨晚熬了很久,才弄出来.也希望对新手有帮助!下面整理一下思路:关键 ...

  7. (转)SQL Server基础之存储过程(清晰使用)

    阅读目录 一:存储过程概述 二:存储过程分类 三:创建存储过程 1.创建无参存储过程 2.修改存储过程 3.删除存储过程 4.重命名存储过程 5.创建带参数的存储过程   简单来说,存储过程就是一条或 ...

  8. .babelrc 文件

    文件干啥用的 babel是降es6转义成浏览器能理解的es5语法. 如果项目中用了babel 转移,需要定义babel需要的插件和预设转码. babel 一般可以配合 webpack . browse ...

  9. 第一个java——swap()交换方法

    其实这学期的java课开了将近四星期了,加上开学前的小小预习.编写不下于二十几个java了. 可这一有关swap()方法的java确实是首次迷惑不解到处寻求解决的程序. 课堂上老师有关类.方法.对象的 ...

  10. FaceRank,最有趣的 TensorFlow 入门实战项目

    FaceRank,最有趣的 TensorFlow 入门实战项目 TensorFlow 从观望到入门! https://github.com/fendouai/FaceRank 最有趣? 机器学习是不是 ...