v6.7.1 (2026-07-14)
<dependency>
<groupId>net.hasor</groupId>
<artifactId>dbvisitor</artifactId>
<version>6.7.1</version>
</dependency>
主要看点
- 重构批量插入与生成键回填链路,由数据库方言选择 JDBC Batch、多 Values、逐条执行或 ResultSet 回填策略。
- 新增
GeneratedKeySource与GeneratedKeyStrategy,支持 SQL ServerOUTPUT INSERTED等从插入结果集返回主键的场景。 - ClickHouse、DB2、DM、H2、MySQL、Oracle、PostgreSQL、SQL Server 等方言的插入能力统一收敛到
InsertSqlDialect。
影响范围
- 构建系统:由 Maven 迁移至 Gradle。
- 插入执行链路:批量插入、冲突策略、序列、自增主键与生成键回填。
- 方言系统:ClickHouse、DB2、DM、H2、MongoDB、MySQL、Oracle、PostgreSQL、SQL Server。
- 类型处理:日期时间、数组与 UUID 生成键兼容性。
- JDBC Adapter:适配器注册 API、Milvus 异步命令及扩展实例化方式。
更新内容
- 新增
- 新增
GeneratedKeySource,允许@Insert和 XMLinsert在 JDBCgetGeneratedKeys与当前 ResultSet 之间选择生成键来源。 - 新增
GeneratedKeyStrategy,区分 JDBC Batch、批量 Generated Keys、多 Values ResultSet 和逐条执行等插入方式。 - SQL Server 方言支持
OUTPUT INSERTED,可在多行插入时读取并回填主键。 - 新增 ClickHouse 方言及关键字定义。
- DB2、H2 增加序列与插入方言能力;DM 增加序列查询及基于
MERGE的冲突更新。
- 新增
- 优化
- 将批量插入策略下沉至
InsertSqlDialect,由各方言统一描述 SQL、冲突能力和生成键策略。 - 按数据库能力选择 Batch、多 Values 或逐条执行,避免假设所有驱动具备相同行为。
- 优化仅包含主键列时的 Ignore/Update 冲突策略,避免生成无效更新语句。
- 统一使用 Cobble 5.x 创建 Dialect、TypeHandler、SqlRule、KeySeqHolderFactory、DataSource 及 Adapter 扩展实例。
AdapterManager使用register表达注册语义,并提供接收ClassLoader的重载;lookup只按 Adapter 名称查询。- 优化 Milvus 异步命令的同步等待逻辑。
- 将批量插入策略下沉至
- 修复
- 修复多个日期时间 TypeHandler 在不同数据库间的兼容差异。
- 修复
ArrayTypeHandler的数据库数组兼容问题。 - 修复 MySQL
orderByNulls在 DEFAULT 策略下 列名黏连的问题。 - 为 UUID32、UUID36 写入增加目标类型检查,避免不兼容类型被静默注入。
升级提示
- Maven Wrapper 已移除,源码构建请使用
./gradlew或./build.sh。 - 自定义 Adapter 若使用旧的
AdapterManager.lookup(..., ClassLoader)注册方式,请迁移到register。 - 自定义
InsertSqlDialect应明确返回对应的GeneratedKeyStrategy;通过插入结果集返回主键时应使用GeneratedKeySource.ResultSet。