Skip to content

Releases: sagframe/sagacity-sqltoy

4.8.0 优化跨数据库函数替换和对统一赋值增加强制修改功能

17 Sep 02:18
Compare
Choose a tag to compare

4.8.0 继4.6.x 完成缓存和sql更新检测机制后的又一个大幅优化版本,主要改进点:

1、调整了plugin包为plugins,下面的类目录做了适当调整,便于今后扩展
2、大幅优化改进跨数据库函数替换处理模式,将之前执行时函数替换改进为缓存模式,相同数据库类型的存在则直接提取,不存在则进行函数替换并放入缓存中,大幅提升效率
3、优化了IUnifyFieldsHandler接口,增加public IgnoreCaseSet forceUpdateFields()方法,便于提供统一公共字段强制修改策略,如最后修改时间

      <-- spring  sqltoy 配置 (参见sqltoy-showcase项目) --->
      <!-- 提供项目对数据库新增、修改操作时完成诸如:创建人、创建时间、修改人、修改时间等关键字段统一赋 
             值,减轻开发者每次赋值操作 -->
      <property name="unifyFieldsHandler">
	<bean  class="com.sagframe.sqltoy.plugins.SqlToyUnifyFieldsHandler" />
     </property>
      
      /* (non-Javadoc)
	 * @see org.sagacity.sqltoy.plugins.IUnifyFieldsHandler#forceUpdateFields()
	 */
	@Override
	public IgnoreCaseSet forceUpdateFields() {
		//强制updateTime 和 systemTime 进行修改
		IgnoreCaseSet forceUpdates=new IgnoreCaseSet();
		forceUpdates.add("updateTime");
		forceUpdates.add("systemTime");
		return forceUpdates;
	}

4、修复函数替换sysdate 无括号匹配处理的缺陷
5、其他一些优化

4.6.4 改进缓存更新检测机制和一个极端特殊情况下反射bug

10 Sep 08:15
Compare
Choose a tag to compare

1、改进缓存更新检测机制由timer定时改为线程内循环检测。
2、改进shardingDataSource检测机制由Timer定时改为线程内循环检测
3、修复DTO 中当同时有 isName 和 Name (isXXXX 和 XXXX 字段)时映射错误,强化isXXXX形式是boolean类型判断。
4、增强函数to_char和date_format 跨数据库时自动替换,实现mysql和oracle等情况下sql的通用性
5、升级fastjson依赖版本
6、其他一些优化

4.6.2 优化sql文件变更检测机制

26 Aug 02:39
Compare
Choose a tag to compare

1、优化SQL文件发生变更重新加载的机制,变成独立的进程进行文件变更监测,代替原来根据sqlId获取sql内容时检测机制。
2、增强了缓存翻译缓存初始化文件策略
3、增加多数据源连接信息debug输出,便于开发阶段识别
4、增加了容器销毁时自动销毁定时检测任务和缓存管理器:destroy-method="destroy"

<!-- 配置辅助sql处理工具用于sql查询条件的处理 -->
<bean id="sqlToyContext" name="sqlToyContext"
		class="org.sagacity.sqltoy.SqlToyContext" init-method="initialize" destroy-method="destroy"></bean>

4.6.0 支持jdk8 LocalDate、LocalDateTime、LocalTime 类型

12 Aug 07:40
Compare
Choose a tag to compare

1、全面支持jdk8 的LocalDate、LocalDateTime、LocalTime 日期类型;
2、优化EntityManager 解析对象的代码,避免子类中定义父类中属性导致被覆盖问题;
3、quickvo也同步进行了修改,默认类型为jdk8的日期类型
4、提交sqltoy-showcase 范例代码,请参见src\test 下面的用例 和 src\main\resources 下面的配置
生成vo请参见sqltoy-showcase\tools\quickvo 下面的配置

4.5.3 完善泛型避免让开发者做过多的强制类型转换操作和CTE特殊语法的支持

19 Jul 08:40
Compare
Choose a tag to compare

1、优化一些注释
2、增强泛型支持,避免:(VO)load(xxxVO) 这种前面需要强转换的操作
3、增强with as 语法几种模式的解析,如:with t1 (p1,p2) as () select * from t1 模式
4、sql文件变更解析改成同步机制,避免应用启动阶段因个别任务执行sql导致重复加载
5、sql模型增加是否有union语法的判断变量并优化部分机制,避免执行过程中去解析判断是否有union 和with as语法,从而提升效率。

4.5.2 优化异常处理和缓存条件转换逻辑判断

16 Jul 04:52
Compare
Choose a tag to compare

1、将统一接口层面的异常抛出去除,统一内部抛出RuntimeException,避免开发者强制要进行异常捕获处理
(关键更新,因此版本号从4.3升级到4.5,但不影响之前的使用)
2、cache-arg 缓存条件转换二级过滤逻辑bug修复。
3、sql查询filter中to-date 过滤处理器里面增加了first_week_day,last_week_day 类型,取指定日期所在周的第一和最后一天
4、部分注释增强和少量代码优化
5、针对jdk11 进行了适应性代码改造,将已经废弃的写法重新依据新标准改写,因此sqltoy完全可以在jdk8和以后的版本中应用
6、增强对update xx set #[, field=? ] 场景语句set 和 后续语句连接存在多余的逗号问题的兼容处理

后面将逐步完善基于spring-boot的showcase 演示项目和相关文档

修复固定条件值中含问号同时也有:named 方式传参的bug,同时放开:param参数名称不允许单个字母的限制

27 Jun 05:30
Compare
Choose a tag to compare

1、修复select * from table where instr(a.name,'xxx?x') and a.type=:type 形式查询问号导致的问题
2、放开参数条件名称不能是单个字母的限制,如 where a.name like :n ,单个字母参数命名一般不严谨,不建议如此简化,基本无法表达意思,考虑有些开发思维不够严谨,特此兼容
3、优化sql执行时长超过阀值的打印日志格式,便于从日志中快速找到性能慢的sql
4、优化部分代码,明确Exception的类型,避免部分条件检查直接抛出Exception,而是明确具体的条件非法或其他的准确的异常,避免事务控制时无法判断RunException 还是checkException

4.3.10 支持elasticsearch6.x版本的restclient和一些注释优化

08 May 06:27
Compare
Choose a tag to compare

1、支持elasticsearch6.x版本的restclient
2、强化sql查询固定参数中的问号处理
3、注释优化

4.3.7.2 修复sql文件加载剔除非相同方言的sql文件的bug

12 Apr 10:21
Compare
Choose a tag to compare

1、修复sql文件加载剔除非相同方言的sql文件的bug

4.3.7 增加数字格式化精度设置

02 Apr 08:21
Compare
Choose a tag to compare

1、增加数字格式化精度设置(四舍五入、去位、进位等)
2、增加基于springsecurity安全框架下通用字段的赋值实现(可选,根据项目情况选择使用,不影响项目)