SqlHelper发布——比你期望的还要多的多(例如比MyBatis-Pagehelper性能更高)

SqlHelper发布——比Mybatis-PageHelper性能更高

起源

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

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

2) 扩展不方便

3) 配置复杂

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

5) 只支持MyBatis

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

关键特性

  1. 支持MyBatis, JFinal,Ebean
  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



国产数据库


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.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

原文地址:https://www.cnblogs.com/f1194361820/p/10970125.html

时间: 2024-11-12 20:54:32

SqlHelper发布——比你期望的还要多的多(例如比MyBatis-Pagehelper性能更高)的相关文章

解决IIS发布网站出现&quot;System.Data.OracleClient 需要 Oracle 客户端软件 8.1.7 或更高版本&quot;的问题

解决方案步骤如下:第一步给网站根目录添加如下数据权限,如图1所示 图1 第二步,右键我的电脑=>管理=>打开组,给administrator添加NETWORK SERVICE 权限,如图2所示 如图2所示 最后一步 重新启动IIS

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

SqlHelper发布-比PageHelper性能更高 起源 前段时间开启了一个新的项目,在选择分页插件时,发现github上很流行的一个是pagehelper,在百度上搜索了一下,使用量.由于项目紧急,所先拿来用了.但是我知道它并不适合我们.原因是它有如下几个缺点: 1) 对国产数据库支持不足 2) 扩展不方便 3) 配置复杂 4) 性能底下 (不要喷我, 因为它不是用的占位符?,发挥不了PrepareSatement的优势) 5) 只支持MyBatis 鉴于它的这些不足,我就趁闲暇时间新开发

Python 3.5发布:新增模块,性能优化,对开发者更友好

Python 3.5.0在9月13号正式发布,与3.4相比,有哪些让人期待的新特性呢? PEP441,优化Python对zip压缩包的支持.从2.6版本开始,Python支持将文件或zip形式的压缩包作为脚本执行,对于有必要作为一个文件发布又复杂到要分模块管理的应用来说,这个功能很实用.但是这个功能却鲜有人知,原因之一是当时没有很好地宣传,只在What's New中提到,没有写到文档中:原因之二是Windows没有为这种形式的文件(.zip)提供相应地Python扩展名(类似.py).所以这一次

教你怎样用unity3d发布一个Android的apk文件.绝对精细

欢迎来到unity学习.unity培训.unity企业培训教育专区,这里有很多U3D资源.U3D培训视频.U3D教程.U3D常见问题.U3D项目源码,[狗刨学习网]unity极致学院,致力于打造业内unity3d培训.学习第一品牌. 1.首先呢.就是必要的一些软件工具了. 不用说unity3d这个是必要的(觉得这是不是废话).然后就是.我们的一些运行的环境了.  Java(jdk).  Android模拟器(sdk)[当然你有真机也可以].这些你可以从网上下载. 在这里我给大家提供一个 Andr

JavaRebel 2.0 发布,一个JVM插件

JavaRebel是一个JVM插件(-javaagent),能够即时重载java class更改,因此不需要重新部署一个应用或者重启容器,节约开发者时间. JavaRebel 2.0的新特征: 改变了方法体 改变了class的结构,包括新增的方法,域,更改/添加注释,接口…… 更改了对Spring, Guice, Wicket, Stripes, Tapestry 4 和 Struts2的配置,使用开放的API. 启动性能更高 更好的兼容性 New and Noteworthy in JavaR

unity3d发布一个Android的apk文件需要具备什么环境及具体操作步骤

写一篇详细的文章送给新手 1.首先呢.就是必要的一些软件工具了. 不用说unity3d这个是必要的(觉得这是不是废话).然后就是.我们的一些运行的环境了.  Java(jdk).  Android模拟器(sdk)[当然你有真机也可以].这些你可以从网上下载. 在这里我给大家提供一个 Android模拟器(sdk)的下载地址    Java(jdk)就不提供了吧.度娘一下就出来了.Unity3d 就更不用说了吧(诶.还是有点废话).呵呵. 2. 安装 一.Java的安装. 这个非常简单.打开你下载

MongoDB---前世今生

MongoDB的官方文档基本是how to do的介绍,而关于how it worked却少之又少,本人也刚买了<MongoDB TheDefinitive Guide>的影印版,还没来得及看,本文原作者将其书中一些关于MongoDB内部现实方面的一些知识介绍如下,值得一看. 今天下载了<MongoDB The Definitive Guide>电子版,浏览了里面的内容,还是挺丰富的.是官网文档实际应用方面的一个补充.和官方文档类似,介绍MongoDB的内部原理是少之又少,只有在附

程序员到项目经理:从内而外的提升

转自:http://www.cnblogs.com/watsonyin/archive/2012/09/10/2679528.html 目录 从程序员到项目经理(一):为什么要当项目经理 从程序员到项目经理(二):升职之辨 从程序员到项目经理(三):认识项目经理 从程序员到项目经理(四):外行可以领导内行吗 从程序员到项目经理(五):程序员加油站,不是人人都懂的学习要点 从程序员到项目经理(六):程序员加油站 — 懂电脑更要懂人脑 从程序员到项目经理(七):程序员加油站 — 完美主义也是一种错

MONGODB全面总结

关于Mongodb的全面总结,学习mongodb的人,可以从这里开始! 分类:            MongoDB2013-06-08 09:5610213人阅读评论(0)收藏举报 目录(?)[+] BSON 效率 传输性 性能 写入协议 数据文件 名字空间和盘区 内存映射存储引擎 其他 MongoDB的架构 MongoDB的特点 MongoDB的功能 MongoDB的局限性与不足 适用范围 MongoDB的不适用范围 要点 MongoDB分布式复制 MongoDB语法与现有关系型数据库SQL