sqltoy-orm-4.16.16 发版,并行查询场景增强、级联增加排序

来源: 投稿
作者: zhongxuchen
2020-11-24

致谢:

       感谢广大网友的积极使用和反馈,提出了非常好的意见,让sqltoy再次变得严谨和细腻!

开源地址:

更新内容

1、增加级联加载排序功能,quickvo里面增加配置
 

<cascade>
   <table name="SQLTOY_DICT_DETAIL" orderBy="showIndex desc" />
   <!-- <table name="SQLTOY_DICT_DETAIL" update-cascade="delete" load="STATUS=1" orderBy=""/> -->
</cascade>


2、并行查询可以自行设置每个查询的条件参数
3、优化findEntity 数据库关键词的处理
4、sqltoy-boot-starter增加可自行扩展translateCacheManger配置
5、在xml中的filters里面to-date 增加了increment-unit 单位选择,默认是天

 

<to-date params="beginDate" format="yyyy-MM-dd" increment-time="24" increment-unit="hours"/>


6、增强sqltoy-boot-starter 对spring.sqltoy 配置的校验,避免有开发者写成sqltoy.xxx遗漏掉spring前缀
7、sqltoy中增强sqlResourcesDir 格式的交易,防止开发者写成文件匹配表达式
8、强化未匹配到sql的sqlId执行错误提示,避免开发者遇到错误时无法定位错误

9、updateByQuery增加统一字段处理,针对最后修改时间、最后修改人等公共字段

sqltoy的十四个关键特点:

1、最简最直观的sql编写方式(不仅仅是查询语句),采用条件参数前置处理规整法,让sql语句部分跟客户端保持高度一致
2、sql中支持注释(规避了对hint特性的影响,知道hint吗?搜oracle hint),和动态更新加载,便于开发和后期维护整个过程的管理
3、支持缓存翻译和反向缓存条件检索(通过缓存将名称匹配成精确的key),实现sql简化和性能大幅提升
4、支持快速分页和分页优化功能,实现分页最高级别的优化,同时还考虑到了cte多个with as情况下的优化支持
5、支持并行查询
6、根本杜绝sql注入问题,以后不需要讨论这个话题
7、支持行列转换、分组汇总求平均、同比环比计算,在于用算法解决复杂sql,同时也解决了sql跨数据库问题
8、支持保留字自动适配
9、支持跨数据库函数自适配,从而非常有利于一套代码适应多种数据库便于产品化,比如oracle的nvl,当sql在mysql环境执行时自动替换为ifnull
10、支持分库分表
11、提供了取top、取random记录、树形表结构构造和递归查询支持、updateFetch单次交互完成修改和查询等实用的功能
12、sqltoy的update、save、saveAll、load 等crud操作规避了hibernate jpa的缺陷,可以深入对比update/updateAll、saveOrUpdate/saveOrUpdateAll内部差异
13、提供了极为人性化的条件处理:排它性条件、日期条件加减和提取月末月初处理等
14、提供了查询结果日期、数字格式化、安全脱敏处理,让复杂的事情变得简单,大幅简化sql或结果的二次处理工作

  • 简要介绍一下sqltoy的几个特点

sqltoy提供了最简洁的动态sql编写

我们对比一下mybatis的实现(从可阅读、可维护等视角看)

  • 缓存翻译,利用缓存减少关联查询,简化sql同时大幅提升效率

  • 极致分页优化

  • 并行查询
// 使用并行查询同时执行2个sql,条件参数是2个查询的合集
String[] paramNames = new String[] { "userId", "defaultRoles", "deployId", "authObjType" };
Object[] paramValues = new Object[] { userId, defaultRoles, DEPLOY_ID,GROUP };

List<QueryResult<TreeModel>> list = super.parallQuery(
		Arrays.asList(ParallQuery.create().sql("webframe_searchAllModuleMenus").resultType(TreeModel.class),
				ParallQuery.create().sql("webframe_searchAllUserReports").resultType(TreeModel.class)),
		paramNames, paramValues);
  • 数据旋转

  • 无限极分组统计(含汇总求平均),算法配置简单又跨数据库!
  • 同比环比

展开阅读全文
3 收藏
分享
加载中
最新评论 (7)
如何与jfinal集成
2020-11-25 18:00
0
回复
举报
支持spring就可以整合
2020-11-25 19:04
0
回复
举报
没用到spring ,jfinal了解下:http://www.jfinal.com
2020-11-26 15:11
0
回复
举报
新老项目必备
2020-11-24 21:51
0
回复
举报
越来越好用了,作者大大辛苦了,
2020-11-24 18:54
0
回复
举报
支持,已经在用
2020-11-24 18:19
0
回复
举报
优势很明显啊!!!!
2020-11-24 18:16
0
回复
举报
更多评论
7 评论
3 收藏
分享
返回顶部
顶部