极致性能 sqltoy-orm-4.12.10 发版

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

内容简介:新内容 支持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);
    }

}

```

 


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

查看所有标签

猜你喜欢:

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

Beginning Google Maps API 3

Beginning Google Maps API 3

Gabriel Svennerberg / Apress / 2010-07-27 / $39.99

This book is about the next generation of the Google Maps API. It will provide the reader with the skills and knowledge necessary to incorporate Google Maps v3 on web pages in both desktop and mobile ......一起来看看 《Beginning Google Maps API 3》 这本书的介绍吧!

URL 编码/解码
URL 编码/解码

URL 编码/解码

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具