极致性能 sqltoy-orm-4.12.10 发版

栏目: 软件资讯 · 发布时间: 4年前

内容简介:新内容 支持postgresql10+之后增加的 identity 主键策略 修复postgresql bytea类型转换错误 优化quickvo增加postgresql类型默认匹配 开源地址: github: https://github.com/chenrenfei/sagacity-sqltoy gitee: h...

新内容

  1. 支持postgresql10+之后增加的 identity 主键策略
  2. 修复postgresql bytea类型转换错误
  3. 优化quickvo增加postgresql类型默认匹配

开源地址:

sqltoy特点说明:

  • 支持 mysql 、postgresql、db2、oracle、sqlserver、 sqlite 、clickhouse、elasticsearch、 mongodb
  • 具有JPA模式的CRUD功能(即CRUD无需写sql),无需写Dao,sqltoy提供了SqlToyLazyDao,同时提供了quickvo从数据库生成POJO。
  • 根本上杜绝了 sql 注入问题
  • 最科学的sql编写方式

* sqltoy的sql编写(支持嵌套)

select 	*
from sqltoy_device_order_info t 
where #[t.ORDER_ID=:orderId]
      #[and t.ORGAN_ID in (:authedOrganIds)]
      #[and t.STAFF_ID in (:staffIds)]
      #[and t.TRANS_DATE>=:beginDate]
      #[and t.TRANS_DATE<:endDate] 

* mybatis同样功能实现

select *
 from sqltoy_device_order_info t 
 <where>
    <if test="orderId!=null">
	and t.ORDER_ID=#{orderId}
    </if>
    <if test="authedOrganIds!=null">
	and t.ORGAN_ID in
	<foreach collection="authedOrganIds" item="order_id" separator="," open="(" close=")">  
            #{order_id}  
 	</foreach>  
    </if>
    <if test="staffIds!=null">
	and t.STAFF_ID in
	<foreach collection="staffIds" item="staff_id" separator="," open="(" close=")">  
            #{staff_id}  
 	</foreach>  
    </if>
    <if test="beginDate!=null">
	and t.TRANS_DATE>=#{beginDate}
    </if>
    <if test="endDate!=null">
	and t.TRANS_DATE<#{endDate}
    </if>
</where>
  • 缓存翻译大幅提升性能,减少多表关联,让sql直观可维护

极致性能 sqltoy-orm-4.12.10 发版

  • 最高等级的分页优化

极致性能 sqltoy-orm-4.12.10 发版

  • 支持用算法代替sql实现行列转换、同比环比、分组汇总等

极致性能 sqltoy-orm-4.12.10 发版

极致性能 sqltoy-orm-4.12.10 发版

  • 支持分库分表
  • sqltoy支持跨数据库函数自适应:一套sql可以自适应多种数据库
  • 提供了5种默认的非数据库相关的主键策略
1、shortNanoTime 22位有序安全ID,格式: 13位当前毫秒+6位纳秒+3位主机ID
2、nanoTimeId 26位有序安全ID,格式:15位:yyMMddHHmmssSSS+6位纳秒+2位(线程Id+随机数)+3位主机ID
3、uuid:32 位uuid
4、SnowflakeId 雪花算法ID
5、redisId 基于 redis  来产生规则的ID主键
  • 提供了通用字段赋值处理

极致性能 sqltoy-orm-4.12.10 发版

  • 提供了树形表的统一处理机制

极致性能 sqltoy-orm-4.12.10 发版

  • sql文件更新自动重载,便于开发阶段无需重启应用
  • 慢sql统计功能
  • 便于跟其他拓展平台集成,如报表平台、配置化服务平台

```java

public class SqlToyContext implements ApplicationContextAware {

   // 省略其他代码

  /**
     * @todo 提供可以动态增加解析sql片段配置的接口,并返回具体id,用于第三方平台集成,如报表平台等
     * @param sqlSegment
     * @return
     * @throws Exception
     */
    public synchronized SqlToyConfig parseSqlSegment(Object sqlSegment) throws Exception {
        return scriptLoader.parseSqlSagment(sqlSegment);
    }

}

```

开源地址:

更新内容

1、升级spring、elasticsearch、mongo依赖包的版本
2、优化对mongodb查询支持、改为直接通过mongoTemplate集成(原先是通过mongoDbFactory模式), 完善范例

参考范例:

https://github.com/chenrenfei/sqltoy-showcase/tree/master/trunk/sqltoy-nosql
见test下面MongoTest.java

sqltoy特点说明:

  • 支持mysql、postgresql、db2、oracle、sqlserver、sqlite、clickhouse、elasticsearch、mongodb等
  • 具有JPA模式的CRUD功能(即CRUD无需写sql),无需写Dao,sqltoy提供了SqlToyLazyDao,同时提供了quickvo从数据库生成POJO。
  • 根本上杜绝了sql注入问题
  • 最科学的sql编写方式

* sqltoy的sql编写(支持嵌套)

select 	*
from sqltoy_device_order_info t 
where #[t.ORDER_ID=:orderId]
      #[and t.ORGAN_ID in (:authedOrganIds)]
      #[and t.STAFF_ID in (:staffIds)]
      #[and t.TRANS_DATE>=:beginDate]
      #[and t.TRANS_DATE<:endDate] 

* mybatis同样功能实现

select *
 from sqltoy_device_order_info t 
 <where>
    <if test="orderId!=null">
	and t.ORDER_ID=#{orderId}
    </if>
    <if test="authedOrganIds!=null">
	and t.ORGAN_ID in
	<foreach collection="authedOrganIds" item="order_id" separator="," open="(" close=")">  
            #{order_id}  
 	</foreach>  
    </if>
    <if test="staffIds!=null">
	and t.STAFF_ID in
	<foreach collection="staffIds" item="staff_id" separator="," open="(" close=")">  
            #{staff_id}  
 	</foreach>  
    </if>
    <if test="beginDate!=null">
	and t.TRANS_DATE>=#{beginDate}
    </if>
    <if test="endDate!=null">
	and t.TRANS_DATE<#{endDate}
    </if>
</where>
  • 缓存翻译大幅提升性能,减少多表关联,让sql直观可维护

极致性能 sqltoy-orm-4.12.10 发版

  • 最高等级的分页优化

极致性能 sqltoy-orm-4.12.10 发版

  • 支持用算法代替sql实现行列转换、同比环比、分组汇总等

极致性能 sqltoy-orm-4.12.10 发版

极致性能 sqltoy-orm-4.12.10 发版

  • 支持分库分表
  • sqltoy支持跨数据库函数自适应:一套sql可以自适应多种数据库
  • 提供了5种默认的非数据库相关的主键策略
1、shortNanoTime 22位有序安全ID,格式: 13位当前毫秒+6位纳秒+3位主机ID
2、nanoTimeId 26位有序安全ID,格式:15位:yyMMddHHmmssSSS+6位纳秒+2位(线程Id+随机数)+3位主机ID
3、uuid:32 位uuid
4、SnowflakeId 雪花算法ID
5、redisId 基于redis 来产生规则的ID主键
  • 提供了通用字段赋值处理

极致性能 sqltoy-orm-4.12.10 发版

  • 提供了树形表的统一处理机制

极致性能 sqltoy-orm-4.12.10 发版

  • sql文件更新自动重载,便于开发阶段无需重启应用
  • 慢sql统计功能
  • 便于跟其他拓展平台集成,如报表平台、配置化服务平台

```java

public class SqlToyContext implements ApplicationContextAware {

   // 省略其他代码

  /**
     * @todo 提供可以动态增加解析sql片段配置的接口,并返回具体id,用于第三方平台集成,如报表平台等
     * @param sqlSegment
     * @return
     * @throws Exception
     */
    public synchronized SqlToyConfig parseSqlSegment(Object sqlSegment) throws Exception {
        return scriptLoader.parseSqlSagment(sqlSegment);
    }

}

```

 


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

群体的智慧

群体的智慧

[美] 詹姆斯·索罗维基 / 王宝泉 / 中信出版社 / 2010-10 / 33.00元

《纽约时报》榜首畅销书,《商业周刊》《福布斯》杂志最佳商业图书 21世纪商务人士必读书,了解群体智慧时代的决策模式 告诉我们如何过日子、如何选择领导人、如何做生意以及如何思考这个世界 我们当中的大多数人,不论是选民还是投资者,是客户还是经理人,似乎都相信宝贵的知识掌握在少数人手中,认为精英们做出的决策更加聪明,很少有人相信“乌合之众”也能像专家那样做得如此出色。 但《纽约客......一起来看看 《群体的智慧》 这本书的介绍吧!

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码