项目地址:http://git.oschina.net/free/Mybatis_PageHelper
软件介绍:http://www.oschina.net/p/mybatis_pagehelper
分页插件示例: http://my.oschina.net/flags/blog/228700
这是一个目前为止最好用的Mybatis物理分页插件,如果你也在用Mybatis,建议尝试该分页插件,这个一定是最方便使用的分页插件。
v2.0更新内容:
支持Mybatis缓存,count和分页同时支持(二者同步)
修改拦截器签名,拦截Executor,签名如下:
@Intercepts(@Signature(type = Executor.class, method = "query", args = {MappedStatement.class, Object.class, RowBounds.class, ResultHandler.class}))将Page类移到外面,方便调用
引用来自“德胜”的评论
看了下赞一个!不过MappedStatement一般只会初始化一次,后面的调用都是一个对象
那么,你需要考虑这种情况:
A线程 getPage() 这个时候MappedStatement的sql为count
这时
B线程 getPage() 已经求完count,将sql改成分页 ~~~~~~~
我没测试,只是凭习惯去从并发方面考虑,然后去看了下mybatis源码,发现的
具体有没有并发问题需要真实的测试.
另外我也弄过,不过考虑到并发,事务等问题.Mybatis也不熟悉,最终放弃.
加油弄,哈哈
引用来自“abel533”的评论
谢谢提醒,我没考虑这种情况,我要测试看看。引用来自“德胜”的评论
速度测试,我太懒了,有结果了告诉我下,我很好奇引用来自“abel533”的评论
已经更新到2.1版本了,解决并发异常,你可以看看。引用来自“德胜”的评论
上班,还没看,不过我想一个解决办法就是加锁,一把锁肯定会非常影响性能,可以对每个MappedStatement使用一把锁,思路就是降低锁的颗粒度,最简单的解决办法,等下中午看看,以前写的插件没写完,然后就不知道扔哪里去了.引用来自“德胜”的评论
看了下赞一个!不过MappedStatement一般只会初始化一次,后面的调用都是一个对象
那么,你需要考虑这种情况:
A线程 getPage() 这个时候MappedStatement的sql为count
这时
B线程 getPage() 已经求完count,将sql改成分页 ~~~~~~~
我没测试,只是凭习惯去从并发方面考虑,然后去看了下mybatis源码,发现的
具体有没有并发问题需要真实的测试.
另外我也弄过,不过考虑到并发,事务等问题.Mybatis也不熟悉,最终放弃.
加油弄,哈哈
引用来自“abel533”的评论
谢谢提醒,我没考虑这种情况,我要测试看看。引用来自“德胜”的评论
速度测试,我太懒了,有结果了告诉我下,我很好奇引用来自“abel533”的评论
已经更新到2.1版本了,解决并发异常,你可以看看。引用来自“唐伟”的评论
我也写过 MyBatis 分页,用 Javassist 修改 XML 解析器中的 DOM 模型,在 MyBatis XML DOM 模型中增加分页语句的配置,一条 count 一条分页。约定一个固定的 sqlId 后缀,既可以自动生成也可以手工配置。分页调用可以在 DAO 层完成。另作一个拦截器,使带 RowBounds 参数的方法支持基于方言的分页。方言支持抄袭自 Hibernate。引用来自“德胜”的评论
看了下赞一个!不过MappedStatement一般只会初始化一次,后面的调用都是一个对象
那么,你需要考虑这种情况:
A线程 getPage() 这个时候MappedStatement的sql为count
这时
B线程 getPage() 已经求完count,将sql改成分页 ~~~~~~~
我没测试,只是凭习惯去从并发方面考虑,然后去看了下mybatis源码,发现的
具体有没有并发问题需要真实的测试.
另外我也弄过,不过考虑到并发,事务等问题.Mybatis也不熟悉,最终放弃.
加油弄,哈哈
引用来自“abel533”的评论
谢谢提醒,我没考虑这种情况,我要测试看看。引用来自“德胜”的评论
速度测试,我太懒了,有结果了告诉我下,我很好奇引用来自“德胜”的评论
看了下赞一个!不过MappedStatement一般只会初始化一次,后面的调用都是一个对象
那么,你需要考虑这种情况:
A线程 getPage() 这个时候MappedStatement的sql为count
这时
B线程 getPage() 已经求完count,将sql改成分页 ~~~~~~~
我没测试,只是凭习惯去从并发方面考虑,然后去看了下mybatis源码,发现的
具体有没有并发问题需要真实的测试.
另外我也弄过,不过考虑到并发,事务等问题.Mybatis也不熟悉,最终放弃.
加油弄,哈哈
引用来自“abel533”的评论
谢谢提醒,我没考虑这种情况,我要测试看看。引用来自“德胜”的评论
速度测试,我太懒了,有结果了告诉我下,我很好奇引用来自“F_L_F”的评论
几个月前自己写了个,也支持count缓存引用来自“德胜”的评论
看了下赞一个!不过MappedStatement一般只会初始化一次,后面的调用都是一个对象
那么,你需要考虑这种情况:
A线程 getPage() 这个时候MappedStatement的sql为count
这时
B线程 getPage() 已经求完count,将sql改成分页 ~~~~~~~
我没测试,只是凭习惯去从并发方面考虑,然后去看了下mybatis源码,发现的
具体有没有并发问题需要真实的测试.
另外我也弄过,不过考虑到并发,事务等问题.Mybatis也不熟悉,最终放弃.
加油弄,哈哈
引用来自“abel533”的评论
谢谢提醒,我没考虑这种情况,我要测试看看。引用来自“德胜”的评论
看了下赞一个!不过MappedStatement一般只会初始化一次,后面的调用都是一个对象
那么,你需要考虑这种情况:
A线程 getPage() 这个时候MappedStatement的sql为count
这时
B线程 getPage() 已经求完count,将sql改成分页 ~~~~~~~
我没测试,只是凭习惯去从并发方面考虑,然后去看了下mybatis源码,发现的
具体有没有并发问题需要真实的测试.
另外我也弄过,不过考虑到并发,事务等问题.Mybatis也不熟悉,最终放弃.
加油弄,哈哈
不过MappedStatement一般只会初始化一次,后面的调用都是一个对象
那么,你需要考虑这种情况:
A线程 getPage() 这个时候MappedStatement的sql为count
这时
B线程 getPage() 已经求完count,将sql改成分页 ~~~~~~~
我没测试,只是凭习惯去从并发方面考虑,然后去看了下mybatis源码,发现的
具体有没有并发问题需要真实的测试.
另外我也弄过,不过考虑到并发,事务等问题.Mybatis也不熟悉,最终放弃.
加油弄,哈哈
引用来自“歇蹩虎子”的评论
还有个问题, 在mysql中查询count, select count(0) from (select * from table) as t, 这样的查询存在严重的性能问题, 不知道oracle中是否存在这样的问题. 如果也有这样的问题, 建议还是截取sql求count的好.引用来自“F_L_F”的评论
几个月前自己写了个,也支持count缓存引用来自“阿木木VS小丁丁”的评论
原来是你 isea533引用来自“abel533”的评论
你从哪儿看到的isea533?csdn?引用来自“阿木木VS小丁丁”的评论
原来是你 isea533