sagacity-sqltoy 睿智 ORM 5.1.4、4.18.43 发版,中秋前完善极端场景诉求

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

内容简介:开源地址: github: https://github.com/sagframe/sagacity-sqltoy gitee: https://gitee.com/sagacity/sagacity-sqltoy idea 插件(可直接在idea中检索安装): https://github.com/threefish/sqltoy-idea-plugins...

开源地址:

更新内容

1、增加findEntity可以用entity查询但返回结果类型是dto的接口方法
/**
 * @TODO 通过entity实体进行查询,但返回结果类型可自行指定
 * @param <T>
 * @param entityClass
 * @param entityQuery
 * @param resultType 指定返回非pojo的结果类型
 * @return
 */
public <T> List<T> findEntity(Class entityClass, EntityQuery entityQuery, Class<T> resultType);
2、优化IdUtil产生主键依赖的通过ip获取serverId场景,规避无网卡情况下无法获取ip的特殊情况
3、优化 sql 日志输出,减少过多的空白影响sql阅读
4、增强部分跨数据库sql函数自适应

qltoy的关键优势:

//------------------了解 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操作规避了jpa的缺陷,参见update(entity,String...forceUpdateProps)和updateFetch
//13、提供了极为人性化的条件处理:排它性条件、日期条件加减和提取月末月初处理等
//14、提供了查询结果日期、数字格式化、安全脱敏处理,让复杂的事情变得简单,大幅简化sql或结果的二次处理工作
//-----------------------------------------------------------------------------------*/

sqltoy特点介绍:

  • JPA式的crud是基本共识,但sqltoy改进了update,增加了updateFetch

sagacity-sqltoy 睿智 ORM 5.1.4、4.18.43 发版,中秋前完善极端场景诉求

  • sqltoy的update、updateAll,弹性设置强制修改属性,一次性数据库交互,解决并发问题
/** * @todo 修改数据并返回数据库记录变更数量(非强制修改属性,当属性值为null不参与修改) * @param entity * @param forceUpdateProps 强制修改的字段属性 * @return Long 数据库记录变更量(插入数据量) */
public Long update(Serializable entity, String... forceUpdateProps);
	
/** * @TODO 批量修改操作,并可以指定强制修改的属性(非强制修改属性,当属性值为null不参与修改) * @param <T> * @param entities * @param forceUpdateProps * @return Long 数据库记录变更量(插入数据量) */
public <T extends Serializable> Long updateAll(List<T> entities, String... forceUpdateProps);
	
//保存或修改数据并返回数据库记录变更数量
public Long saveOrUpdate(Serializable entity, String... forceUpdateProps);
  • updateFetch: 一次交互完成锁查询、修改,并返回修改后的结果,尤其适用于库存台账、资金台账场景
// sqltoy的updateFetch是jpa没有的,可以深入了解其原理,一次交互完成查询、锁定、修改并返回修改后结果
/** * @todo 获取并锁定数据并进行修改(只支持针对单表查询,查询语句要简单) * @param queryExecutor * @param updateRowHandler * @return */
public List updateFetch(final QueryExecutor queryExecutor, final UpdateRowHandler updateRowHandler);
  • sqltoy最佳sql编写模式,便于开发和后期维护

sagacity-sqltoy 睿智 ORM 5.1.4、4.18.43 发版,中秋前完善极端场景诉求

sagacity-sqltoy 睿智 ORM 5.1.4、4.18.43 发版,中秋前完善极端场景诉求

  • sqltoy的缓存翻译,大幅减少表关联简化sql,让你的查询性能成几何级提升

sagacity-sqltoy 睿智 ORM 5.1.4、4.18.43 发版,中秋前完善极端场景诉求

  • 极致的分页,同样帮助你实现查询的性能大幅提升
  1. 快速分页:@fast() 实现先取单页数据然后再关联查询,极大提升速度
  2. 分页优化器:page-optimize 让分页查询由两次变成1.3~1.5次(用缓存实现相同查询条件的总记录数量在一定周期内无需重复查询
  3. sqltoy的分页取总记录的过程不是简单的select count(1) from (原始sql);而是智能判断是否变成:select count(1) from 'from后语句', 并自动剔除最外层的order by
  4. sqltoy支持并行查询:parallel="true",同时查询总记录数和单页数据,大幅提升性能
sagacity-sqltoy 睿智 ORM 5.1.4、4.18.43 发版,中秋前完善极端场景诉求
 
  • 便利的跨数据库统计计算:数据旋转
sagacity-sqltoy 睿智 ORM 5.1.4、4.18.43 发版,中秋前完善极端场景诉求
  • 便利的跨数据库统计计算:无限极分组统计(含汇总求平均)
sagacity-sqltoy 睿智 ORM 5.1.4、4.18.43 发版,中秋前完善极端场景诉求
  • 便利的跨数据库统计计算:同比环比
sagacity-sqltoy 睿智 ORM 5.1.4、4.18.43 发版,中秋前完善极端场景诉求

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

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

Don't Make Me Think

Don't Make Me Think

Steve Krug / New Riders Press / 18 August, 2005 / $35.00

Five years and more than 100,000 copies after it was first published, it's hard to imagine anyone working in Web design who hasn't read Steve Krug's "instant classic" on Web usability, but people are ......一起来看看 《Don't Make Me Think》 这本书的介绍吧!

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

RGB HEX 互转工具

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试