今天下午在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. Wiser的Junit测试用法

    package org.jbpm.process.workitem.email; import static org.junit.Assert.assertEquals; import static ...

  2. 请验证实例名称是否正确并且 SQL Server 已配置为允许远程连接。 (provider: Named Pipes Provider, error: 40 - 无法打开到 SQL Server 的连接)

    程序异常,错误信息:在与 SQL Server 建立连接时出现与网络相关的或特定于实例的错误.未找到或无法访问服务器.请验证实例名称是否正确并且 SQL Server 已配置为允许远程连接. (pro ...

  3. Aspose.words 书签定位

    1. 简介 Aspose.words 可以在不使用 Microsoft.Word 的情况下生成.修改.转换.打印文档.不依赖office组件,这一点给我们提供了极大的便利性,可以简单的引入 DLL(D ...

  4. nopCommerce 3.9 大波浪系列 之 网页加载Widgets插件原理

    一.插件简介 插件用于扩展nopCommerce的功能.nopCommerce有几种类型的插件如:支付.税率.配送方式.小部件等(接口如下图),更多插件可以访问nopCommerce官网. 我们看下后 ...

  5. .NET CORE——Console中使用依赖注入

    我们都知道,在 ASP.NET CORE 中通过依赖注入的方式来使用服务十分的简单,而在 Console 中,其实也只是稍微绕了个小弯子而已.不管是内置 DI 组件或者第三方的 DI 组件(如Auto ...

  6. jqthumb.js缩略图插件-让缩略图正常显示而不变形

    插件介绍 项目中有图片的时候,有的宽大于高,有的宽小于高,尤其在做图片列表的时候,经常发现缩略图会有变形的.我们怎样来解决这一问题呢. 方法一:用photoshop来处理缩略图.小的项目还可以,大的项 ...

  7. SharePoint 2016 配置工作流环境

    前言 SharePoint 2016 默认创建工作流的时候,工作流平台只包含2010版本,如果想要使用状态机工作流,需要单独安装workflow manager 1.0才可以,下面,我们为大家介绍一下 ...

  8. 如何快速查看github代码库中第一次commit的记录

    发现一个别人推荐的代码库用来学习源码, star星还不少,别人推荐从第一次commit开始阅读,于是试着去找commits的第一次 问题来了,这个代码库commits7855次,点击进入commits ...

  9. C#上位机串口控制12864显示

    实现的效果 上面是用Proteus仿真的,,对了如果自己想用proteus仿真需要安装下面这个软件 再看一下实物显示效果 先做上位机部分........... 为了程序一启动就把电脑上能用的串口号显示 ...

  10. js判断移动终端(手机浏览器)

    方法1: <script type="text/javascript">         var browser = {             versions: f ...