v6.7.1 (2026-07-14)
<dependency>
<groupId>net.hasor</groupId>
<artifactId>dbvisitor</artifactId>
<version>6.7.1</version>
</dependency>
Highlights
- Reworked batch inserts and generated-key backfill so each dialect can select JDBC Batch, multi-values, one-by-one, or ResultSet-based execution.
- Added
GeneratedKeySourceandGeneratedKeyStrategy, including keys returned through SQL ServerOUTPUT INSERTED. - Unified insert capabilities for ClickHouse, DB2, DM, H2, MySQL, Oracle, PostgreSQL, and SQL Server under
InsertSqlDialect.
Impact Scope
- Build system: migrated from Maven to Gradle.
- Insert execution: batch inserts, conflict strategies, sequences, identity keys, and generated-key backfill.
- Dialects: ClickHouse, DB2, DM, H2, MongoDB, MySQL, Oracle, PostgreSQL, and SQL Server.
- Type handling: date/time, arrays, and UUID generated-key compatibility.
- JDBC adapters: adapter registration API, Milvus async commands, and extension instantiation.
Changes
- New Features
- Added
GeneratedKeySourcefor choosing between JDBCgetGeneratedKeysand the current ResultSet in@Insertand XMLinsertmappings. - Added
GeneratedKeyStrategyfor JDBC Batch, batched generated keys, multi-values ResultSet, and one-by-one execution. - Added SQL Server
OUTPUT INSERTEDsupport for multi-row key retrieval and backfill. - Added the ClickHouse dialect and keyword definitions.
- Added sequence and insert capabilities for DB2 and H2; added sequence queries and
MERGE-based conflict updates for DM.
- Added
- Improvements
- Moved batch-insert strategy selection into
InsertSqlDialect, where each dialect describes SQL generation, conflict support, and generated-key behavior. - Selects Batch, multi-values, or one-by-one execution according to actual database and driver capabilities.
- Avoids invalid Ignore/Update SQL when an insert contains only primary-key columns.
- Standardized extension instantiation through Cobble 5.x for dialects, type handlers, SQL rules, key-holder factories, data sources, and adapters.
- Renamed adapter registration from
lookuptoregisterand added aClassLoaderoverload;lookupnow resolves adapters only by name. - Improved synchronous waiting for Milvus asynchronous commands.
- Moved batch-insert strategy selection into
- Bug Fixes
- Fixed cross-database behavior in multiple date/time TypeHandlers.
- Fixed database-array compatibility in
ArrayTypeHandler. - Fixed concatenated column names in the MySQL DEFAULT
orderByNullsstrategy. - Added target-type validation before injecting UUID32 and UUID36 generated values.
Upgrade Notes
- The Maven Wrapper has been removed. Use
./gradlewor./build.shfor source builds. - Custom adapters using the former
AdapterManager.lookup(..., ClassLoader)registration API should migrate toregister. - Custom
InsertSqlDialectimplementations should return an explicitGeneratedKeyStrategy; useGeneratedKeySource.ResultSetwhen keys are returned through the insert ResultSet.