v6.7.0 (2026-02-15)
<dependency>
<groupId>net.hasor</groupId>
<artifactId>dbvisitor</artifactId>
<version>6.7.0</version>
</dependency>
主要看点
- 新增
jdbc-milvus驱动模块和VectorSqlDialect接口,Lambda API 支持向量范围查询与排序查询,适配 PostgreSQL、Elastic7/8、Milvus 三类数据源。 - 通过
JulianDayTypeHandler、PgDateTypeHandler、PgVectorTypeHandler三个 TypeHandler,扩展日期与向量类型处理能力。详细解读 → - 新增
queryForPairs方法,支持将查询结果两列直接映射为Map<K, V>。详细解读 → - 修复
AbstractDialect.fmtName()标识符注入漏洞(Freedom 模式),统一所有方言的转义逻辑。 - 贯通
@Insert注解和 XML 映射器的useGeneratedKeys执行路径,主键可正确回填。
影响范围
- dbvisitor 核心模块:TypeHandler 扩展、Fluent API(向量查询)、动态 SQL 引擎、分页、DAO 代理、安全性修复。
- dbvisitor-adapter 模块:新增
jdbc-milvus驱动。 - dbvisitor-driver 模块:
JdbcResultSetArray 类型兼容性增强。 - 方言系统(Dialect):新增
Elastic8Dialect、VectorSqlDialect;PostgreSQL 方言新增序列支持、SQL 生成修复、标识符转义安全加固。 - 集成模块:新增 Spring Boot 4 兼容示例。
更新内容
- 新增
- 新增
jdbc-milvus驱动模块,完成 Milvus 向量数据库适配(支持 DB/Index/Partition/Table 命令、DML 语句、Hint)。 - 新增
Elastic8Dialect方言,支持 Elasticsearch 8.x。 - 新增
VectorSqlDialect接口,Lambda API 支持向量范围查询和向量排序查询(适配 PostgreSQL、Elastic7/8、Milvus)。 - 新增
QueryCompare、QueryFunc接口 6 种向量度量模式的细粒度向量查询支持。 - 新增
JulianDayTypeHandler,使用儒略日数统一存储公元前后日期,避免历法转换歧义。 - 新增
PgDateTypeHandler,利用 PostgreSQL 原生 BC 后缀格式处理公元前日期。 - 新增
PgVectorTypeHandler,处理 PostgreSQL pgvector 向量类型数据读写。详细解读 → - 新增
GeneratedKeyHandler接口useGeneratedKeys方法。 - 新增
QueryFunc接口queryForPairs、queryForPairsByName方法,将查询结果两列直接映射为Map<K, V>。 - 新增
JsonArrayList、JsonHashMap、JsonHashSet、JsonType四个类型,用于queryForObject查询 JSON 数据类型时的结构转换。 - 新增 Spring Boot 4 兼容示例工程。
- 新增
- 优化
- 优化
JdbcResultSet.getArray()方法,自动适配List/Set/Object[]/Primitive Array为java.sql.Array。 - 优化
#{field, typeHandler=...}对 null 值的处理,自动推断 JDBC 类型,无需显式指定jdbcType。 - PostgreSQL 方言实现
SeqSqlDialect接口,新增序列查询支持(selectSeq)。
- 优化
- 修复
- 修复
@Insert注解的useGeneratedKeys属性行为和 XML 映射器的useGeneratedKeys行为不一致问题。 - 修复
queryForMap查询全 null 行时抛出 NPE 的问题。 - 修复
@Table注解仅配置ddlAuto属性时无法被获取到的问题。 - 修复
JdbcTemplate.loadSplitSQL()对注释开头的 SQL 片段被错误跳过的问题。 - 修复
@BindTypeHandler注解的 Map 子类被误当作普通 Map 处理的问题。 - 修复
ArrayTypeHandler对 PostgreSQL 空数组返回 null 的问题(补充内部类型名映射)。 - 修复
apply()拼接原生 SQL 片段时缺少 AND/OR 连接符的问题。 - 修复
PostgreSqlDialect的insertIgnore(缺少INTO)和insertReplace(SET 子句无逗号)SQL 生成错误。 - 修复
usePage()方法中分页偏移计算异常(调用顺序错误)。 - 修复
<where>/<set>动态标签对大写前缀(AND/OR)剥离失败的问题 。 - 修复
@{and}/@{or}动态规则参数为 null 时条件未跳过的问题。 - 修复
useGeneratedKeys生成的主键无法回填到参数 Map 的问题。 - 修复 DAO 代理接口方法查询为空时抛出
IndexOutOfBoundsException的问题。 - 修复
queryStatement底层返回 null 时被包装为[null]单元素列表的问题。 - 修复
BaseMapper.insert()方法传入空集合时的处理逻辑。 - 修复
ColumnMapping.getKeyTpe()方法名拼写错误,更正为getKeyType()。 - 修复
AbstractDialect.fmtName()标识符注入漏洞(Freedom 模式),统一转义逻辑到基类。
- 修复