PageHelper 与 Mybatis Plus 分页插件有什么区别?该如何选择?

256 天前
 IFallowed
2406 次点击
所在节点    Java
14 条回复
layxy
256 天前
没啥太大的区别吧, PageHelper 只提供分页功能,Mybatis Plus 不只是提供了分页,还有其他比较方便的功能,如果你用 Mybatis Plus,就没必要使用 PageHelper
jorneyr
256 天前
这些分页实现的都有严重的性能问题,数据量小没事,数据量大一点的时候查询数量的 SQL 性能很低,甚至比原始 SQL 的效率低几百倍都可能,因为都是最简单的 select count(1) from (original sql) t 这么简单的封装。
cleanery
256 天前
@jorneyr #2 有更好的替代吗
jorneyr
255 天前
@cleanery
分析过一些相关的开源项目,目前没有发现好的。
我们公司有专门搞 SQL 分析的部门,我给提要求 count 的改写用完善的方式,MySQL 的他们搞了,其他数据库的偷懒也是直接给 select count(1) from (original) t 了。
Habyss
255 天前
@jorneyr #2 如果只是这个的话, 是可以分页的时候自定义 count sql 解决的
issakchill
255 天前
前者以前是写个 threadlocal 的分页标识 不知道改了没有 这种实现太粗糙了
ZeroDu
255 天前
@jorneyr #2 Mybatis Plus 改了好几个版本了,没有联查的情况下不会走这种的
ZeroDu
255 天前
jorneyr
255 天前
@Habyss 自己写 count 了,还用插件的分页干啥呢,自动生成的那些分页语句也是很简单的封装的。
ZGame
255 天前
@jorneyr 又黑我 count(*) ..... 话说现代数据库引擎 count(*) 应该不会差距太多吧
cppc
254 天前
@issakchill #6 确实,很早之前用过 PageHelper ,简单用没发现啥大问题,直到有一天为了解决一个问题写了个拦截器,拦截器里面有数据库操作。我才意识到这个设计有大问题。
Rever4433
254 天前
@jorneyr #2 其实问题不大,我公司用 mybatis-plus 分页,单表数据量 500 万行左右,查起来也能在 1 秒内返回数据。
Aresxue
254 天前
没啥区别,不想用 Mybatis Plus 想用原生 Mybatis 就可以使用 PageHelper ,不然就直接用 Mybatis Plus 自带的分页好了,不过 Mybatis Plus 确实比较糙,我也贡献过对 limit 的一个优先
jorneyr
254 天前
@Rever4433 其实问题不大,我公司用 mybatis-plus 分页,单表数据量 500 万行左右,查起来也能在 1 秒内返回数据。

我们就是做数据库客户端工具的,开始的时候我们也是这么认为的,SQL 不就是那么写么,到客户现场后才知道自己有多没见过世面,10M 的 SQL 语句,40 万行的 SQL 语句,Web 端导出几百万行数据,粗暴做法的都死的很难看。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1018649

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX