Releases: sagframe/sagacity-sqltoy
5.6.16 强化loadCascade功能增加可设置忽略主表查询、兼容历史版本主键策略类包路径
1、强化级联加载功能,可以通设置onlyCascade,只加载子表
/*
* 演示批量级联加载,忽略主表查询,用于主表事先查询出集合的场景
*/
@Test
public void testLoadAllOnlyCascade() {
List entites = new ArrayList();
entites.add(new ComplexpkHeadVO(LocalDateTime.parse("2020-09-08T12:11:20"), "S0001"));
entites.add(new ComplexpkHeadVO(LocalDateTime.parse("2020-09-08T12:11:20"), "S0002"));
List<ComplexpkHeadVO> heads = lightDao.load().onlyCascade().many(entites);
// 打印级联加载的子表数据
for (ComplexpkHeadVO item : heads) {
System.err.println(JSON.toJSONString(item));
}
}
2、增加兼容历史主键类包路径,便于从4.x版本升级
<!-- 其他非spring框架可以基于sagacity-sqltoy 进行扩展 -->
<dependency>
<groupId>com.sagframe</groupId>
<artifactId>sagacity-sqltoy</artifactId>
<!-- jdk8 对应的版本号为:5.6.16.jre8 -->
<version>5.6.16</version>
</dependency>
<!-- springboot -->
<dependency>
<groupId>com.sagframe</groupId>
<artifactId>sagacity-sqltoy-spring-starter</artifactId>
<!-- jdk8 对应的版本号为:5.6.16.jre8 -->
<version>5.6.16</version>
</dependency>
<!-- solon 插件 -->
<dependency>
<groupId>com.sagframe</groupId>
<artifactId>sagacity-sqltoy-solon-plugin</artifactId>
<!-- jdk8 对应的版本号为:5.6.16.jre8 -->
<version>5.6.16</version>
</dependency>
5.6.14 优化对mogdb的适配,lightDao中增加generateBizId通过redis获取业务主键的方法
1、优化mogdb数据库支持
2、在lightdao中增加generateBizId灵活通过redis产生业务主键
<!-- 其他非spring框架可以基于sagacity-sqltoy 进行扩展 -->
<dependency>
<groupId>com.sagframe</groupId>
<artifactId>sagacity-sqltoy</artifactId>
<!-- jdk8 对应的版本号为:5.6.14.jre8 -->
<version>5.6.14</version>
</dependency>
<!-- springboot -->
<dependency>
<groupId>com.sagframe</groupId>
<artifactId>sagacity-sqltoy-spring-starter</artifactId>
<!-- jdk8 对应的版本号为:5.6.14.jre8 -->
<version>5.6.14</version>
</dependency>
<!-- solon 插件 -->
<dependency>
<groupId>com.sagframe</groupId>
<artifactId>sagacity-sqltoy-solon-plugin</artifactId>
<!-- jdk8 对应的版本号为:5.6.14.jre8 -->
<version>5.6.14</version>
</dependency>
5.6.13 优化多租户隔离saveOrUpdate场景的缺陷
1、优化多租户隔离在saveOrUpdate场景下,sql语句是merge into on () update set ,当在on里面增加了租户条件,update中就不能对该字段进行修改
<!-- 其他非spring框架可以基于sagacity-sqltoy 进行扩展 -->
<dependency>
<groupId>com.sagframe</groupId>
<artifactId>sagacity-sqltoy</artifactId>
<!-- jdk8 对应的版本号为:5.6.13.jre8 -->
<version>5.6.13</version>
</dependency>
<!-- springboot -->
<dependency>
<groupId>com.sagframe</groupId>
<artifactId>sagacity-sqltoy-spring-starter</artifactId>
<!-- jdk8 对应的版本号为:5.6.13.jre8 -->
<version>5.6.13</version>
</dependency>
<!-- solon 插件 -->
<dependency>
<groupId>com.sagframe</groupId>
<artifactId>sagacity-sqltoy-solon-plugin</artifactId>
<!-- jdk8 对应的版本号为:5.6.13.jre8 -->
<version>5.6.13</version>
</dependency>
5.6.12 兼容早期主键策略包路径,优化sql日志定位调用代码位置
1、兼容4.19.x等早期版本pojo中主键策略类包路径,推进老的sqltoy迁移
// 历史id主键策略的包路径,5.x版本开始剔除了兼容处理,2024-7-16日增加兼容处理
private static final String IdGeneratorOldPackage = "org.sagacity.sqltoy.plugin.id.";
private static final String IdGeneratorPackage = "org.sagacity.sqltoy.plugins.id.impl.";
2、优化sql日志输出时定位具体调用的业务代码位置(针对动态代理场景)
<!-- 其他非spring框架可以基于sagacity-sqltoy 进行扩展 -->
<dependency>
<groupId>com.sagframe</groupId>
<artifactId>sagacity-sqltoy</artifactId>
<!-- jdk8 对应的版本号为:5.6.12.jre8 -->
<version>5.6.12</version>
</dependency>
<!-- springboot -->
<dependency>
<groupId>com.sagframe</groupId>
<artifactId>sagacity-sqltoy-spring-starter</artifactId>
<!-- jdk8 对应的版本号为:5.6.12.jre8 -->
<version>5.6.12</version>
</dependency>
<!-- solon 插件 -->
<dependency>
<groupId>com.sagframe</groupId>
<artifactId>sagacity-sqltoy-solon-plugin</artifactId>
<!-- jdk8 对应的版本号为:5.6.12.jre8 -->
<version>5.6.12</version>
</dependency>
5.6.11 增加对mogdb数据库支持、updateSaveFetch支持数据版本@DataVersion
1、新增加对MogDB数据库的支持 感谢 @wangod 扩展实现
2、针对updateSaveFetch操作完善更新时数据版本控制和自动修改 感谢@rabbit 提出issue和测试
3、优化SqlUtil中针对sql多行注释的处理,兼容极端场景
4、优化SqlExecuteStat,改进针对业务代码定位的处理,兼容Proxy动态代理
5、优化Concat、ConcatWS跨数据库函数自适应类,兼容oracle11g
<!-- 其他非spring框架可以基于sagacity-sqltoy 进行扩展 -->
<dependency>
<groupId>com.sagframe</groupId>
<artifactId>sagacity-sqltoy</artifactId>
<!-- jdk8 对应的版本号为:5.6.11.jre8 -->
<version>5.6.11</version>
</dependency>
<!-- springboot -->
<dependency>
<groupId>com.sagframe</groupId>
<artifactId>sagacity-sqltoy-spring-starter</artifactId>
<!-- jdk8 对应的版本号为:5.6.11.jre8 -->
<version>5.6.11</version>
</dependency>
<!-- solon 插件 -->
<dependency>
<groupId>com.sagframe</groupId>
<artifactId>sagacity-sqltoy-solon-plugin</artifactId>
<!-- jdk8 对应的版本号为:5.6.11.jre8 -->
<version>5.6.11</version>
</dependency>
5.6.11.RC8 增加对mogdb数据库支持、updateSaveFetch支持数据版本@DataVersion
1、新增加对MogDB数据库的支持 感谢@Legendary 扩展实现
2、针对updateSaveFetch操作完善更新时数据版本控制和自动修改 感谢@rabbit 提出issue和测试
3、优化SqlUtil中针对sql多行注释的处理,兼容极端场景
4、优化SqlExecuteStat,改进针对业务代码定位的处理,兼容Proxy动态代理
5、优化Concat、ConcatWS跨数据库函数自适应类,兼容oracle11g
<!-- 其他非spring框架可以基于sagacity-sqltoy 进行扩展 -->
<dependency>
<groupId>com.sagframe</groupId>
<artifactId>sagacity-sqltoy</artifactId>
<!-- jdk8 对应的版本号为:5.6.11.RC8.jre8 -->
<version>5.6.11.RC8</version>
</dependency>
<!-- springboot -->
<dependency>
<groupId>com.sagframe</groupId>
<artifactId>sagacity-sqltoy-spring-starter</artifactId>
<!-- jdk8 对应的版本号为:5.6.11.RC8.jre8 -->
<version>5.6.11.RC8</version>
</dependency>
<!-- solon 插件 -->
<dependency>
<groupId>com.sagframe</groupId>
<artifactId>sagacity-sqltoy-solon-plugin</artifactId>
<!-- jdk8 对应的版本号为:5.6.11.RC8.jre8 -->
<version>5.6.11.RC8</version>
</dependency>
5.6.10 修复5.6.5 spring aot引发的sql资源文件加载错误,完成AOT的全面验证
1、修复5.6.5 版本引入spring aot时产生的sql文件加载错误(springboot2.x\3.x 都已经验证)
2、优化oracle timestamp类型转localDateTime精度丢失问题(5.6.7版本)
3、修复不同数据库函数自适应中的ToChar函数,只有一个参数:to-char(field)场景时处理缺陷(5.6.7版本)
<!-- 其他非spring框架可以基于sagacity-sqltoy 进行扩展 -->
<dependency>
<groupId>com.sagframe</groupId>
<artifactId>sagacity-sqltoy</artifactId>
<!-- jdk8 对应的版本号为:5.6.10.jre8 -->
<version>5.6.10</version>
</dependency>
<!-- springboot -->
<dependency>
<groupId>com.sagframe</groupId>
<artifactId>sagacity-sqltoy-spring-starter</artifactId>
<!-- jdk8 对应的版本号为:5.6.10.jre8 -->
<version>5.6.10</version>
</dependency>
<!-- solon 插件 -->
<dependency>
<groupId>com.sagframe</groupId>
<artifactId>sagacity-sqltoy-solon-plugin</artifactId>
<!-- jdk8 对应的版本号为:5.6.10.jre8 -->
<version>5.6.10</version>
</dependency>
5.6.6 增强MapperUtils支持指定映射关系、增强@include(id="sqlId")动态根据方言获取id
1、增强MapperUtils支持指定映射关系
2、增强@include(id="sqlId")动态根据方言获取id,如sqlId_mysql
请根据需要进行升级
<!-- 其他非spring框架可以基于sagacity-sqltoy 进行扩展 -->
<dependency>
<groupId>com.sagframe</groupId>
<artifactId>sagacity-sqltoy</artifactId>
<!-- jdk8 对应的版本号为:5.6.6.jre8 -->
<version>5.6.6</version>
</dependency>
<!-- springboot -->
<dependency>
<groupId>com.sagframe</groupId>
<artifactId>sagacity-sqltoy-spring-starter</artifactId>
<!-- jdk8 对应的版本号为:5.6.6.jre8 -->
<version>5.6.6</version>
</dependency>
<!-- solon 插件 -->
<dependency>
<groupId>com.sagframe</groupId>
<artifactId>sagacity-sqltoy-solon-plugin</artifactId>
<!-- jdk8 对应的版本号为:5.6.6.jre8 -->
<version>5.6.6</version>
</dependency>
5.6.5 支持springboot3.x、solon aot (native原生)、增加默认事务支持
1、完成solon、spring aot的适配
2、强化wrapTreeTable的参数合法性校验
3、支持非spring等框架下的事务
4、字段加密排除同时被脱敏场景,同时配置加密、脱敏则以加密为主
5、updateByQuery、deleteByQuery 只有where("1=1") 自动去除whre 1=1
6、增加H2数据库DDL创建支持
7、优化solon 集成数据库的事务适配
SqlToyContext sqlToyContext = new SqlToyContext();
sqlToyContext.setSqlResourcesDir("classpath:sqltoy/demo.sql.xml");
sqlToyContext.initialize();
Map<String, String> map = new HashMap<>();
map.put(DruidDataSourceFactory.PROP_URL, "jdbc:mysql://192.168.56.101:3306/sqltoy");
// 设置驱动Driver
map.put(DruidDataSourceFactory.PROP_DRIVERCLASSNAME, "com.mysql.jdbc.Driver");
// 设置用户名
map.put(DruidDataSourceFactory.PROP_USERNAME, "root");
// 设置密码
map.put(DruidDataSourceFactory.PROP_PASSWORD, "123456");
// 创建数据源
DataSource dataSource = DruidDataSourceFactory.createDataSource(map);
sqlToyContext.setDefaultDataSource(dataSource);
// 框架默认提供了DefaultLightDaoImpl实现
LightDao lightDao = new DefaultLightDaoImpl(sqlToyContext);
// 非事务
// lightDao.find("select * from staff_info where status=:status",
// MapKit.map("status", "1"), StaffInfo.class);
// 事务场景(代码是演示)
Object result = DBTransUtils.doTrans(lightDao.getDataSource(), () -> {
// 这里可以多个操作行为
lightDao.updateByQuery(StaffInfo.class,EntityUpdate.create().set("sexType", "F").where("staffId=?").values("S0001"));
return lightDao.find("select * from staff_info where status=:status", MapKit.map("status", "1"),StaffInfo.class);
});
<!-- 其他非spring框架可以基于sagacity-sqltoy 进行扩展 -->
<dependency>
<groupId>com.sagframe</groupId>
<artifactId>sagacity-sqltoy</artifactId>
<!-- jdk8 对应的版本号为:5.6.5.jre8 -->
<version>5.6.5</version>
</dependency>
<!-- springboot -->
<dependency>
<groupId>com.sagframe</groupId>
<artifactId>sagacity-sqltoy-spring-starter</artifactId>
<!-- jdk8 对应的版本号为:5.6.5.jre8 -->
<version>5.6.5</version>
</dependency>
<!-- solon 插件 -->
<dependency>
<groupId>com.sagframe</groupId>
<artifactId>sagacity-sqltoy-solon-plugin</artifactId>
<!-- jdk8 对应的版本号为:5.6.5.jre8 -->
<version>5.6.5</version>
</dependency>
5.6.5.RC7 完成solon、spring aot的适配
1、完成solon、spring aot的适配
2、强化wrapTreeTable的参数合法性校验
3、支持非spring等框架下的事务
4、字段加密排除同时被脱敏场景,同时配置加密、脱敏则以加密为主
5、updateByQuery、deleteByQuery 只有where("1=1") 自动去除whre 1=1
6、增加H2数据库DDL创建支持
7、优化solon 集成数据库的事务适配
SqlToyContext sqlToyContext = new SqlToyContext();
sqlToyContext.setSqlResourcesDir("classpath:sqltoy/demo.sql.xml");
sqlToyContext.initialize();
Map<String, String> map = new HashMap<>();
map.put(DruidDataSourceFactory.PROP_URL, "jdbc:mysql://192.168.56.101:3306/sqltoy");
// 设置驱动Driver
map.put(DruidDataSourceFactory.PROP_DRIVERCLASSNAME, "com.mysql.jdbc.Driver");
// 设置用户名
map.put(DruidDataSourceFactory.PROP_USERNAME, "root");
// 设置密码
map.put(DruidDataSourceFactory.PROP_PASSWORD, "123456");
// 创建数据源
DataSource dataSource = DruidDataSourceFactory.createDataSource(map);
sqlToyContext.setDefaultDataSource(dataSource);
// 框架默认提供了DefaultLightDaoImpl实现
LightDao lightDao = new DefaultLightDaoImpl(sqlToyContext);
// 非事务
// lightDao.find("select * from staff_info where status=:status",
// MapKit.map("status", "1"), StaffInfo.class);
// 事务场景(代码是演示)
Object result = DBTransUtils.doTrans(lightDao.getDataSource(), () -> {
// 这里可以多个操作行为
lightDao.updateByQuery(StaffInfo.class, EntityUpdate.create().set("sexType", "F").where("staffId=?").values("S0001"));
return lightDao.find("select * from staff_info where status=:status", MapKit.map("status", "1"),StaffInfo.class);
});
<!-- 其他非spring框架可以基于sagacity-sqltoy 进行扩展 -->
<dependency>
<groupId>com.sagframe</groupId>
<artifactId>sagacity-sqltoy</artifactId>
<!-- jdk8 对应的版本号为:5.6.5.RC7.jre8 -->
<version>5.6.5.RC7</version>
</dependency>
<!-- springboot -->
<dependency>
<groupId>com.sagframe</groupId>
<artifactId>sagacity-sqltoy-spring-starter</artifactId>
<!-- jdk8 对应的版本号为:5.6.5.RC7.jre8 -->
<version>5.6.5.RC7</version>
</dependency>
<!-- solon 插件 -->
<dependency>
<groupId>com.sagframe</groupId>
<artifactId>sagacity-sqltoy-solon-plugin</artifactId>
<!-- jdk8 对应的版本号为:5.6.5.RC7.jre8 -->
<version>5.6.5.RC7</version>
</dependency>