开源地址:
sqltoy特点说明:支持mysql、postgresql、db2、oracle、sqlserver、sqlite、clickhouse、elasticsearch、mongodb等
具有JPA模式的CRUD功能(即CRUD无需写sql),无需写Dao,sqltoy提供了SqlToyLazyDao,同时提供了quickvo从数据库生成POJO。
根本上杜绝了sql注入问题
最科学的sql编写方式
* sqltoy的sql编写(支持嵌套),简单直观,几乎直接从dbeaver中copy进来,后期维护也方便
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
and t.ORDER_ID=#{orderId}
and t.ORGAN_ID in
#{order_id}
and t.STAFF_ID in
#{staff_id}
and t.TRANS_DATE>=#{beginDate}
and t.TRANS_DATE
缓存翻译大幅提升性能,减少多表关联,让sql直观可维护
最高等级的分页优化
支持用算法代替sql实现行列转换、同比环比、分组汇总等
支持分库分表
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主键提供了通用字段赋值处理
提供了树形表的统一处理机制
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);
}
}
```