V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
IFallowed
V2EX  ›  Java

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

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

    我们就是做数据库客户端工具的,开始的时候我们也是这么认为的,SQL 不就是那么写么,到客户现场后才知道自己有多没见过世面,10M 的 SQL 语句,40 万行的 SQL 语句,Web 端导出几百万行数据,粗暴做法的都死的很难看。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1061 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 22:39 · PVG 06:39 · LAX 14:39 · JFK 17:39
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.