分页插件演示:http://blog.csdn.net/isea533/article/details/23831273

分页插件演示样例:http://blog.csdn.net/isea533/article/details/24700339

假设你也在用Mybatis。建议尝试该分页插件。一定是最方便使用的分页插件。

下载最新版代码:http://git.oschina.net/free/Mybatis_PageHelper

近期使用分页插件时,发现一些特殊情况下报错的问题,报错的地方经过分析发现时求count时候的參数有问题。

并且是在使用了<foreach>一类的特殊标签时会产生的问题。

<foreach>循环的时候,会定义入參为__frch_item_0,__frch_item_1等等,在第一版的分页插件中。在144行的代码中:

BoundSql countBS = new BoundSql(mappedStatement.getConfiguration(), countSql,
boundSql.getParameterMappings(), boundSql.getParameterObject());

这里构造了查询总数的BoundSql对象。这个对象有一个特殊的字段metaParameters就是存储像foreach中这些特殊參数的。可是BoundSql的默认构造方法没有提供该值的注入。因而在这里的时候会丢失部分參数。就会导致后面找不到对应參数报错的情况出现。

找到原因后,对代码做例如以下改动,在原PageHelper.java的144行以下加入例如以下代码:

//须要将metaParameters赋值过去..
MetaObject countBsObject = SystemMetaObject.forObject(countBS);
MetaObject boundSqlObject = SystemMetaObject.forObject(boundSql);
countBsObject.setValue("metaParameters",boundSqlObject.getValue("metaParameters"));

通过这3行代码将metaParameters的值给countBS对象。

改动之后就不会有问题了。

下载最新版代码:http://git.oschina.net/free/Mybatis_PageHelper

版权声明:本文博客原创文章,博客,未经同意,不得转载。

最新文章

  1. .net之微信企业号开发(二) 企业号人员身份认证与开发
  2. win10下安装Ubuntu出现win10无法进入的情况
  3. codeforces 477B B. Dreamoon and Sets(构造)
  4. 03---Net基础加强
  5. UVA 100 - The 3n+1 problem (3n+1 问题)
  6. java reflection总结
  7. 【CentOS7】yum 软件管理
  8. CCIE-MPLS基础篇-实验手册
  9. 从给数组中的对象去重看Javascript中的reduce()
  10. Android进阶(十八)AndroidAPP开发问题汇总(二)
  11. C#中的RDLC报告
  12. $a=[1,2,3,4,5]; $b=[a,b,c,d,e]; 转成[[1,a],[2,b],[3,c],[4,d],[5,3]]
  13. GlashFish部署的程序时好时坏,无法访问时报404
  14. VMware搭建虚拟机服务器
  15. java JDBC (五) properties配置文件
  16. hadoop-1
  17. Python endswith() 函数
  18. C# 窗口自适应窗口宽度和高度
  19. CSS3制作美丽的3D表单
  20. 虚拟内存(VirtualAlloc),堆(HeapAlloc/malloc/new)和Memory Mapped File

热门文章

  1. cocos2d-x截图功能clippingnode它也可用于——白费
  2. 数据一致性(consistency)、服务可用性(availability)、分区容错性(partition-tolerance)
  3. 从lca到树链剖分 bestcoder round#45 1003
  4. SQL Server :理解IAM 页
  5. WPF Media 简单的播放器
  6. asp.net不能调试,配置一切正常
  7. simpleDateFormat日期格式转换
  8. centos安装和卸载软件
  9. 在汉澳sinox2014建立ZFS高可靠文件存储系统
  10. C# WinForm多线程(一)Thread类库