Skip to content

Releases: sagframe/sagacity-sqltoy

5.6.31 分页提取count语句算法优化、日期字符串毫秒、微妙位长度转换兼容

08 Nov 05:02
4551c55
Compare
Choose a tag to compare

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模式

31 Oct 05:27
d73c693
Compare
Choose a tag to compare

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数据库的支持

28 Oct 04:42
d73c693
Compare
Choose a tag to compare

1、增加vastbase、stardb、opengauss数据库的支持(将gaussdb拆分出gaussdb和opengauss,vastbase、stardb、gaussdb继承opengauss模式)

5.6.29 增加海量数据库(vastbase)支持,优化个别rs.close行为

24 Oct 13:34
Compare
Choose a tag to compare

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场景的逻辑

17 Oct 15:43
d247cdd
Compare
Choose a tag to compare

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单字符处理缺陷

16 Oct 06:11
Compare
Choose a tag to compare

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逻辑

03 Oct 18:36
Compare
Choose a tag to compare

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跳号

28 Sep 02:49
Compare
Choose a tag to compare

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)

26 Sep 06:01
8cec105
Compare
Choose a tag to compare

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") ) 场景缺陷

19 Sep 14:11
Compare
Choose a tag to compare

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>