zoukankan      html  css  js  c++  java
  • SqlHelper发布——比你期望的还要多的多(例如比MyBatis-Pagehelper性能更高)

    SqlHelper发布——比Mybatis-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

    mybatis-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结合使用

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

        <dependency>
            <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.jn.sqlhelper.mybatis.plugins.pagination.CustomScriptLanguageDriver" />
                ...
            </settings>
            ...
        </configuration>
        
        <plugins>
          <plugin interceptor="com.jn.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

     更高版本、更简易的用法,可以去GitHub (wiki,  turtoial, 支持QQ群)

  • 相关阅读:
    解决“iOS 7 app自动更新,无法在app中向用户展示更新内容”问题
    ios 数组排序
    六年谈游戏工作室与游戏开发过程简介(转)
    mysql按位的索引判断值是否为1
    mysql按位的索引判断位的值
    git bash here右键菜单
    将VSCode添加到右键
    给vscode添加右键打开功能
    winrar压缩过滤文件及文件夹
    编译wxWidgets
  • 原文地址:https://www.cnblogs.com/f1194361820/p/10970125.html
Copyright © 2011-2022 走看看