Releases: sagframe/sagacity-sqltoy
5.6.31 分页提取count语句算法优化、日期字符串毫秒、微妙位长度转换兼容
1、增强sql自动分页提取count部分sql的算法,兼容最终from前面有非(select from)对称场景:
select field1,(day form(xxx)) as aliase from table
2、优化DateUtil,对非规范长度的字符串(如:2024-11-07 10:52:36.12345)转LocalDateTime、LocalTime的兼容处理
3、强化opengauss系列getTables方法,表名匹配小写化
<!-- 其他非spring框架可以基于sagacity-sqltoy 进行扩展 -->
<dependency>
<groupId>com.sagframe</groupId>
<artifactId>sagacity-sqltoy</artifactId>
<!-- jdk8 对应的版本号为:5.6.31.jre8 -->
<version>5.6.31</version>
</dependency>
<!-- springboot -->
<dependency>
<groupId>com.sagframe</groupId>
<artifactId>sagacity-sqltoy-spring-starter</artifactId>
<!-- jdk8 对应的版本号为:5.6.31.jre8 -->
<version>5.6.31</version>
</dependency>
<!-- solon 插件 -->
<dependency>
<groupId>com.sagframe</groupId>
<artifactId>sagacity-sqltoy-solon-plugin</artifactId>
<!-- jdk8 对应的版本号为:5.6.31.jre8 -->
<version>5.6.31</version>
</dependency>
5.6.30 增加opengauss、stardb数据库的支持,将vastbase、mogdb改为继承opengauss模式
1、增加opengauss、stardb数据库的支持,将vastbase、mogdb改为继承opengauss模式
<!-- 其他非spring框架可以基于sagacity-sqltoy 进行扩展 -->
<dependency>
<groupId>com.sagframe</groupId>
<artifactId>sagacity-sqltoy</artifactId>
<!-- jdk8 对应的版本号为:5.6.30.jre8 -->
<version>5.6.30</version>
</dependency>
<!-- springboot -->
<dependency>
<groupId>com.sagframe</groupId>
<artifactId>sagacity-sqltoy-spring-starter</artifactId>
<!-- jdk8 对应的版本号为:5.6.30.jre8 -->
<version>5.6.30</version>
</dependency>
<!-- solon 插件 -->
<dependency>
<groupId>com.sagframe</groupId>
<artifactId>sagacity-sqltoy-solon-plugin</artifactId>
<!-- jdk8 对应的版本号为:5.6.30.jre8 -->
<version>5.6.30</version>
</dependency>
5.6.30.RC5 增加vastbase、stardb、opengauss数据库的支持
1、增加vastbase、stardb、opengauss数据库的支持(将gaussdb拆分出gaussdb和opengauss,vastbase、stardb、gaussdb继承opengauss模式)
5.6.29 增加海量数据库(vastbase)支持,优化个别rs.close行为
1、增加海量数据库(vastbase)支持,默认映射成gaussdb执行
2、分页最大单页记录pageFetchSizeLimit(对应参数:spring.sqltoy.pageFetchSizeLimit)小于0表示不做限制
3、优化个别rs.close()行为,统一放入finally块中处理
4、升级solon3.0.2版本
<!-- 其他非spring框架可以基于sagacity-sqltoy 进行扩展 -->
<dependency>
<groupId>com.sagframe</groupId>
<artifactId>sagacity-sqltoy</artifactId>
<!-- jdk8 对应的版本号为:5.6.29.jre8 -->
<version>5.6.29</version>
</dependency>
<!-- springboot -->
<dependency>
<groupId>com.sagframe</groupId>
<artifactId>sagacity-sqltoy-spring-starter</artifactId>
<!-- jdk8 对应的版本号为:5.6.29.jre8 -->
<version>5.6.29</version>
</dependency>
<!-- solon 插件 -->
<dependency>
<groupId>com.sagframe</groupId>
<artifactId>sagacity-sqltoy-solon-plugin</artifactId>
<!-- jdk8 对应的版本号为:5.6.29.jre8 -->
<version>5.6.29</version>
</dependency>
5.6.28 统一@if/@elseif/@else场景的逻辑
1、规范if/elseif/else的逻辑(历史版本:if场景,sql中无动态参数也会被剔除)
select * from table where name='测试'
-- 非if逻辑场景下,内部动态参数为null,最终为and status=1 也要自动剔除
#[and status=1 #[and type=:type] #[and orderName like :orderName] ]
-- flag==1成立,因为内容存在动态参数,所以继续变成#[and status=:status]参数为null剔除,不为null则保留
#[@if(:flag==1) and status=:status]
-- 成立,因为and status=1 没有动态参数,则保留and status=1
#[@if(:flag==1) and status=1 ]
#[@elseif(:flag==2) and status=2 ]
#[@else and status in (1,2)]
<!-- 其他非spring框架可以基于sagacity-sqltoy 进行扩展 -->
<dependency>
<groupId>com.sagframe</groupId>
<artifactId>sagacity-sqltoy</artifactId>
<!-- jdk8 对应的版本号为:5.6.28.jre8 -->
<version>5.6.28</version>
</dependency>
<!-- springboot -->
<dependency>
<groupId>com.sagframe</groupId>
<artifactId>sagacity-sqltoy-spring-starter</artifactId>
<!-- jdk8 对应的版本号为:5.6.28.jre8 -->
<version>5.6.28</version>
</dependency>
<!-- solon 插件 -->
<dependency>
<groupId>com.sagframe</groupId>
<artifactId>sagacity-sqltoy-solon-plugin</artifactId>
<!-- jdk8 对应的版本号为:5.6.28.jre8 -->
<version>5.6.28</version>
</dependency>
5.6.27 修复StringUtil.firstToLowerCase单字符处理缺陷
1、修复StringUtil.firstToLowerCase单字符处理缺陷
感谢:俊华的反馈
<!-- 其他非spring框架可以基于sagacity-sqltoy 进行扩展 -->
<dependency>
<groupId>com.sagframe</groupId>
<artifactId>sagacity-sqltoy</artifactId>
<!-- jdk8 对应的版本号为:5.6.27.jre8 -->
<version>5.6.27</version>
</dependency>
<!-- springboot -->
<dependency>
<groupId>com.sagframe</groupId>
<artifactId>sagacity-sqltoy-spring-starter</artifactId>
<!-- jdk8 对应的版本号为:5.6.27.jre8 -->
<version>5.6.27</version>
</dependency>
<!-- solon 插件 -->
<dependency>
<groupId>com.sagframe</groupId>
<artifactId>sagacity-sqltoy-solon-plugin</artifactId>
<!-- jdk8 对应的版本号为:5.6.27.jre8 -->
<version>5.6.27</version>
</dependency>
5.6.26 对批量操作支持并行执行机制,提升性能、支持if、elseif、else逻辑
1、针对batchUpdate、saveAll、updateAll、saveOrUpdateAll、loadAll等批量操作,针对超大数据集场景提供并行执行机制
@Test
public void testDeleteAll() {
List entites = new ArrayList();
for (int i = 1; i < 3000; i++) {
entites.add(new ComplexpkHeadVO(LocalDateTime.parse("2020-09-08T12:11:20"), "S000" + i));
}
// 最小1000作为一个并行分组,并行度10、最大等待时间120秒
lightDao.delete().parallelConfig(ParallelConfig.create().groupSize(1000)
.maxThreads(10).maxWaitSeconds(120)).many(entites);
//批量修改
//lightDao.update().parallelConfig(ParallelConfig.create().groupSize(1000)).many(entites);
//批量保存
//lightDao.save().parallelConfig(ParallelConfig.create().groupSize(1000)).many(entites);
//批量saveOrUpdate,saveMode(SaveMode.UPDATE)存在则修改
//lightDao.save().saveMode(SaveMode.UPDATE).parallelConfig(ParallelConfig.create()
// .groupSize(1000)).many(entites);
//lightDao.batch().sql(sql).dataSet(batchDataSet).parallelConfig(ParallelConfig.create().groupSize(1000)).submit()
}
2、sql支持if\elseif\else 逻辑
String sql = """
select * from table where 1=1
#[@if(:flag==1) and status=:status
#[@if(:operateType==2) and saleType is not :saleType]
#[@else and saleType is :saleType]
]
#[@elseif(:flag==2) and name like :name]
#[@else and orderType=:orderType]
#[@if(:tenantId==4) and tenant=1]
#[@elseif(:tenantId==3) and tenant=3]
""";
SqlToyResult result = SqlConfigParseUtils.processSql(sql,new String[] { "flag", "status", "name", "orderType", "saleType", "operateType", "tenantId" },new Object[] { 1, 1, "张", "SALE", null, 4, 3 });
<!-- 其他非spring框架可以基于sagacity-sqltoy 进行扩展 -->
<dependency>
<groupId>com.sagframe</groupId>
<artifactId>sagacity-sqltoy</artifactId>
<!-- jdk8 对应的版本号为:5.6.26.jre8 -->
<version>5.6.26</version>
</dependency>
<!-- springboot -->
<dependency>
<groupId>com.sagframe</groupId>
<artifactId>sagacity-sqltoy-spring-starter</artifactId>
<!-- jdk8 对应的版本号为:5.6.26.jre8 -->
<version>5.6.26</version>
</dependency>
<!-- solon 插件 -->
<dependency>
<groupId>com.sagframe</groupId>
<artifactId>sagacity-sqltoy-solon-plugin</artifactId>
<!-- jdk8 对应的版本号为:5.6.26.jre8 -->
<version>5.6.26</version>
</dependency>
5.6.25 save操作传递主键值时sequence主键策略主动调整为assgin,避免sequence跳号
1、save操作增加判断主键值不为空时,且是sequence主键策略则主动调整为assgin,避免sequence跳号
2、batchUpdate、executeSql操作时,增加判断sql是否是merge into 且方言是sqlserver,帮助自动补充分号结尾(sqlserver merge into 必须是;结尾)
3、完善代码注释以及变更日志,增强代码可理解性和变更原因
4、升级pom第三方组件的依赖版本
<!-- 其他非spring框架可以基于sagacity-sqltoy 进行扩展 -->
<dependency>
<groupId>com.sagframe</groupId>
<artifactId>sagacity-sqltoy</artifactId>
<!-- jdk8 对应的版本号为:5.6.25.jre8 -->
<version>5.6.25</version>
</dependency>
<!-- springboot -->
<dependency>
<groupId>com.sagframe</groupId>
<artifactId>sagacity-sqltoy-spring-starter</artifactId>
<!-- jdk8 对应的版本号为:5.6.25.jre8 -->
<version>5.6.25</version>
</dependency>
<!-- solon 插件 -->
<dependency>
<groupId>com.sagframe</groupId>
<artifactId>sagacity-sqltoy-solon-plugin</artifactId>
<!-- jdk8 对应的版本号为:5.6.25.jre8 -->
<version>5.6.25</version>
</dependency>
5.6.24 @if()增加exclude,deleteAll 底层改为in (idList)
1、增加 @if (:param exclude xxx)逻辑(include的取反)
2、优化deleteAll底层逻辑,改为delete from table id in (:ids),复合主键为: (code,type) in ((:codes,:types)),提升效率
3、优化loadAll级联加载,复合主键支持select * from table (id,code) in ((x1,x2),(x11,x22)) 多字段in模式,提升效率
<!-- 其他非spring框架可以基于sagacity-sqltoy 进行扩展 -->
<dependency>
<groupId>com.sagframe</groupId>
<artifactId>sagacity-sqltoy</artifactId>
<!-- jdk8 对应的版本号为:5.6.24.jre8 -->
<version>5.6.24</version>
</dependency>
<!-- springboot -->
<dependency>
<groupId>com.sagframe</groupId>
<artifactId>sagacity-sqltoy-spring-starter</artifactId>
<!-- jdk8 对应的版本号为:5.6.24.jre8 -->
<version>5.6.24</version>
</dependency>
<!-- solon 插件 -->
<dependency>
<groupId>com.sagframe</groupId>
<artifactId>sagacity-sqltoy-solon-plugin</artifactId>
<!-- jdk8 对应的版本号为:5.6.24.jre8 -->
<version>5.6.24</version>
</dependency>
5.6.23 修复@fast( @include("sqlId") ) 场景缺陷
1、修复@fast( @include("sqlId") ) 场景缺陷
2、强化where #[field1=:field1Value and] field2=:field2Value 场景sql处理缺陷
where #[field1=:field1Value and] field2=:field2Value
变成了
where 1=1 field2=:field2Value
<!-- 其他非spring框架可以基于sagacity-sqltoy 进行扩展 -->
<dependency>
<groupId>com.sagframe</groupId>
<artifactId>sagacity-sqltoy</artifactId>
<!-- jdk8 对应的版本号为:5.6.23.jre8 -->
<version>5.6.23</version>
</dependency>
<!-- springboot -->
<dependency>
<groupId>com.sagframe</groupId>
<artifactId>sagacity-sqltoy-spring-starter</artifactId>
<!-- jdk8 对应的版本号为:5.6.23.jre8 -->
<version>5.6.23</version>
</dependency>
<!-- solon 插件 -->
<dependency>
<groupId>com.sagframe</groupId>
<artifactId>sagacity-sqltoy-solon-plugin</artifactId>
<!-- jdk8 对应的版本号为:5.6.23.jre8 -->
<version>5.6.23</version>
</dependency>