sagacity-sqltoy 睿智 ORM 框架 5.1.0 和 4.18.39 版本发布,增加新特性

栏目: 软件资讯 · 发布时间: 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、针对类似库存台账、客户资金帐等强事务、高并发场景,提供updateSaveFetch新的一次数据库交互完成锁查询、更新、记录不存在则插入、返回的全过程的方法

/**
 * @TODO 适用于库存台账、客户资金账等高并发强事务场景,一次数据库交互实现:
 *       <p>
 *       <li>1、锁查询;</li>
 *       <li>2、记录存在则修改;</li>
 *       <li>3、记录不存在则执行insert;</li>
 *       <li>4、返回修改或插入的记录信息</li>
 *       </p>
 * @param <T>
 * @param entity           尽量不要使用identity、sequence主键
 * @param updateRowHandler
 * @param uniqueProps      唯一性字段,用于做唯一性检索,不设置则按照主键进行查询
 * @return
 */
public <T extends Serializable> T updateSaveFetch(final T entity, final UpdateRowHandler 
         updateRowHandler,final String... uniqueProps);

//使用方法范例
public TransLedgerVO updateSaveTrans(TransLedgerVO transVO) {
      return sqlToyLazyDao.updateSaveFetch(transVO, new UpdateRowHandler() {
          @Override
         public void updateRow(ResultSet rs, int index) throws Exception {
            // 一般updateFetch会依托表中的现有值做一些逻辑处理,否则可以直接update
            rs.updateInt("QUANTITY", rs.getInt("QUANTITY") + transVO.getQuantity());
            rs.updateBigDecimal("AMT", rs.getBigDecimal("AMT").add(transVO.getAmt()));
         }
     }, "orderId");
}
  • sqltoy的关键优势:
//------------------了解 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.0 和 4.18.39 版本发布,增加新特性

  • 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.0 和 4.18.39 版本发布,增加新特性

sagacity-sqltoy 睿智 ORM 框架 5.1.0 和 4.18.39 版本发布,增加新特性

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

sagacity-sqltoy 睿智 ORM 框架 5.1.0 和 4.18.39 版本发布,增加新特性

  • 极致的分页,同样帮助你实现查询的性能大幅提升
  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.0 和 4.18.39 版本发布,增加新特性
 
  • 便利的跨数据库统计计算:数据旋转
sagacity-sqltoy 睿智 ORM 框架 5.1.0 和 4.18.39 版本发布,增加新特性
  • 便利的跨数据库统计计算:无限极分组统计(含汇总求平均)
sagacity-sqltoy 睿智 ORM 框架 5.1.0 和 4.18.39 版本发布,增加新特性
  • 便利的跨数据库统计计算:同比环比
sagacity-sqltoy 睿智 ORM 框架 5.1.0 和 4.18.39 版本发布,增加新特性

以上所述就是小编给大家介绍的《sagacity-sqltoy 睿智 ORM 框架 5.1.0 和 4.18.39 版本发布,增加新特性》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

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

Foundations of PEAR

Foundations of PEAR

Good, Nathan A./ Kent, Allan / Springer-Verlag New York Inc / 2006-11 / $ 50.84

PEAR, the PHP Extension and Application Repository, is a bountiful resource for any PHP developer. Within its confines lie the tools that you need to do your job more quickly and efficiently. You need......一起来看看 《Foundations of PEAR》 这本书的介绍吧!

在线进制转换器
在线进制转换器

各进制数互转换器

SHA 加密
SHA 加密

SHA 加密工具

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具