• SqlHelper发布—比Pagehelper更好用的分页插件


    SqlHelper发布—比PageHelper性能更高

    起源

    前段时间开启了一个新的项目,在选择分页插件时,发现github上很流行的一个是pagehelper,在百度上搜索了一下,使用量。由于项目紧急,所先拿来用了。但是我知道它并不适合我们。原因是它有如下几个缺点:

    1) 对国产数据库支持不足

    2) 扩展不方便

    3) 配置复杂

    4) 性能底下 (不要喷我, 因为它不是用的占位符?,发挥不了PrepareSatement的优势)

    5) 只支持MyBatis

    鉴于它的这些不足,我就趁闲暇时间新开发了一款解决上述缺点的分页工具,它已经在公司里的两个项目得到了验证。但它不仅仅是个分页工具那么简单,目前支持的特性有Pagination、UrlParser,未来会支持更多特性。

    关键特性

    1. 支持MyBatis, JFinal,Ebean,Mango
    2. 支持 90+ 种数据库, 支持列表参见 here. 包含了几乎所有的国产数据库:
    • TiDB (北京平凯星辰科技))
    • Doris (Apache Doris,百度研发)
    • MaxCompute (阿里巴巴)
    • K-DB (浪潮)
    • GBase (南大通用)
    • DM (达梦)
    • OSCAR (神州通用)
    • HighGo (瀚高)
    • KingBase (金仓)
    • OpenBase (东软)
    • SequoiaDB (巨杉)

    如果你想知道所有的数据库排名的话,你可以在这里找到: DB Engines.

    1. 同一个应用中支持多种数据库
    2. 不需要配置dialect,可以自动的获取。
    3. 比 Mybatis-PageHelper性能更高, 原因是limit , offset等参数使用 PrepareStatement placeholder '?' , Mybatis是硬编码拼接的
    4. 通过Java SPI的方式支持了插件
    5. 支持 spring boot 1.x , 2.x
    6. 支持 mybatis 3.x
    7. 支持 JDK6+

    Vs Pagehelper

    metric pagehelper sqlhelper
    databases 13 90+
    multiple databases in runtime
    auto detect dialect
    plugin
    PrepareStatement with '?' X
    mybatis 3.x 3.x
    spring boot 1.x, 2.x 1.x, 2.x
    JDK 1.6+ 1.6+
    jFinal X
    EBean X
    Mango X
    国产数据库 X √ (参见上述列表)

    安装

    可以在多种场景下使用,支持MyBatis,JFinal,EBean等。先就说说MyBatis下如何使用:

    1)  与Mybatis + SpringBoot结合使用

    此应用环境下,只需导入下列包即可:

            <groupId>com.github.fangjinuo.sqlhelper</groupId>
            <artifactId>sqlhelper-mybatis-spring-boot-autoconfigure</artifactId>
            <version>${sqlhelper.version}</version>
        </dependency>
        <dependency>
            <groupId>com.github.fangjinuo.sqlhelper</groupId>
            <artifactId>sqlhelper-mybatis-spring-boot-starter</artifactId>
            <version>${sqlhelper.version}</version>
        </dependency>
    

    2)与MyBatis (无spring boot)结合使用

    此应用环境下,使用也不麻烦。

    第一步,导入依赖:

    <dependency>
            <groupId>com.github.fangjinuo.sqlhelper</groupId>
            <artifactId>sqlhelper-dialect</artifactId>
            <version>${sqlhelper.version}</version>
        </dependency>
    

    第二步:配置插件:

    <configuration>
            ...
            <databaseIdProvider type="DB_VENDOR">
              <property name="SQL Server" value="sqlserver"/>
              <property name="DB2" value="db2"/>
              <property name="Oracle" value="oracle" />
            </databaseIdProvider>
            ...
            <settings>
                ...
                <setting name="defaultScriptingLanguage" value="com.github.fangjinuo.sqlhelper.mybatis.plugins.pagination.CustomScriptLanguageDriver" />
                ...
            </settings>
            ...
        </configuration>
        
        <plugins>
          <plugin interceptor="com.github.fangjinuo.sqlhelper.mybatis.plugins.pagination.MybatisPaginationPlugin" />
        </plugins>
    

    使用

     @GetMapping
        public PagingResult list(){
            User queryCondtion = new User();
            queryCondtion.setAge(10);
            PagingRequest request = new PagingRequest()
                    .setPageNo(1)
                    .setPageSize(10);
            PagingRequestContextHolder.getContext().setPagingRequest(request);
            List users = userDao.selectByLimit(queryCondtion);
            request.getResult().setItems(users);
            return request.getResult();
        }
    

    从mybatis-pagehelper迁移

    为了兼容已有的应用,特意提供了从mybatis-pagehelper迁移工具。使用也很简单,把mybatis-pagehelper.jar移除,导入下面的包即可。

     <dependency>
            <groupId>com.github.fangjinuo.sqlhelper</groupId>
            <artifactId>sqlhelper-mybatis-over-pagehelper</artifactId>
            <version>${sqlhelper.version}</version>
        </dependency>
    

    支持

    https://github.com/fangjinuo/sqlhelper

  • 相关阅读:
    思考:如何保证服务稳定性?
    svn:Item is out of date解决办法
    MAC OS 10.15 Lucene 源码分析环境搭建
    防止数据重复提交的6种方法(超简单)!
    6种快速统计代码执行时间的方法,真香!
    漫画:Integer 竟然有 6 种比较方式?
    IDEA 不为人知的 5 个骚技巧!真香!
    自由职业半年之后,我又滚回职场了...
    为什么建议你使用枚举?
    ESP8266
  • 原文地址:https://www.cnblogs.com/smfx1314/p/10976517.html
Copyright © 2020-2023  润新知