极致查询性能 sqltoy-orm-4.12.6 发版
开源地址:
- github: https://github.com/chenrenfei/sagacity-sqltoy
- gitee: https://gitee.com/sagacity/sagacity-sqltoy
- idea 插件(可在market直接检索sqltoy安装): https://gitee.com/threefish/sqltoy-idea-plugins
更新内容
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直观可维护
- 最高等级的分页优化
- 支持用算法代替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统计功能
- 便于跟其他拓展平台集成,如报表平台、配置化服务平台
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); } }
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
从一年前的1200多人优化到现在200多人,待在这样的技术团队是一种什么体验?
1.写点情怀 平日里都是分享技术的,但是最近做的最多的一件事却是送别,挺悲伤的一个词,我个人不太喜欢,但是现在整个大的环境都不太景气,众多企业纷纷倒闭,一批批工人,白领被迫失去了工作,其中也不乏我自己所在的职业:程序员。特别的从去年年底至今,依旧活着的公司大部分也是苟延残喘,大幅度的“优化”员工,而我自己身边的朋友,送走了一批又一批,自己的感触挺深的,所以想把这段时间的经历写成文字,当做是解压了。 2.亲身经历 在现在这家公司干了接近三年了,刚进来时,整个IT部分是700多人,当时业务发展速度很快,很多业务线需要技术做数据支撑,那时公司处在上升期,所以不断的在扩张技术团队去满足各种业务需求,顶峰时期,技术团队达到了1200多人,各种项目也是琳琅满目(姑且这样形容吧,算是对好的一种向往),自己也有参与到不同的项目中,也学到了挺多东西,交到了很多朋友,乐此不疲。但是好景不长,伴随着互联网寒冬以及疫情的到来,从去年年底到现在,身边很多朋友陆陆续续都离开了,举一个印象比较深刻的例子: 去年五月份开始,我们领导找我组建一个新的项目团队,做3D应用相关的开发,当时结合了公司的业务和市场反馈,经过简...
- 下一篇
smart-doc 1.8.7 发布,Java 零注解文档生成工具
smart-doc是一款同时支持java restful api和apache dubbo rpc接口文档生成的工具,smart-doc颠覆了传统类似swagger这种大量采用注解侵入来生成文档的实现方法。 smart-doc完全基于接口源码分析来生成接口文档,完全做到零注解侵入,你只需要按照java标准注释编写,smart-doc就能帮你生成一个简易明了的markdown 或是一个像GitBook样式的静态html文档。如果你已经厌倦了swagger等文档工具的无数注解和强侵入污染,那请拥抱smart-doc吧! 功能特性 零注解、零学习成本、只需要写标准java注释。 基于源代码接口定义自动推导,强大的返回结构推导。 支持Spring MVC,Spring Boot,Spring Boot Web Flux(controller书写方式)。 支持Callable,Future,CompletableFuture等异步接口返回的推导。 支持JavaBean上的JSR303参数校验规范,支持分组验证。 对json请求参数的接口能够自动生成模拟json参数。 对一些常用字段定义能够生成有...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS关闭SELinux安全模块
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- SpringBoot2整合Thymeleaf,官方推荐html解决方案
- CentOS7安装Docker,走上虚拟化容器引擎之路
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- CentOS7,CentOS8安装Elasticsearch6.8.6
- CentOS7设置SWAP分区,小内存服务器的救世主
- CentOS8安装Docker,最新的服务器搭配容器使用