dbVisitor 统一数据库访问库,更新 v6.7.0,面向 AI 支持向量操作

v6.7.0 (2026-02-15)

复制代码
<dependency>
    <groupId>net.hasor</groupId>
    <artifactId>dbvisitor</artifactId>
    <version>6.7.0</version>
</dependency>

主要看点​

  1. 新增 jdbc-milvus 驱动模块和 VectorSqlDialect 接口,Lambda API 支持向量范围查询与排序查询,适配 PostgreSQL、Elastic7/8、Milvus 三类数据源。
  2. 通过 JulianDayTypeHandler、PgDateTypeHandler、PgVectorTypeHandler 三个 TypeHandler,扩展日期与向量类型处理能力。详细解读 →
  3. 新增 queryForPairs 方法,支持将查询结果两列直接映射为 Map<K, V>。详细解读 →
  4. 修复 AbstractDialect.fmtName() 标识符注入漏洞(Freedom 模式),统一所有方言的转义逻辑。
  5. 贯通 @Insert 注解和 XML 映射器的 useGeneratedKeys 执行路径,主键可正确回填。

影响范围​

  • dbvisitor 核心模块:TypeHandler 扩展、Fluent API(向量查询)、动态 SQL 引擎、分页、DAO 代理、安全性修复。
  • dbvisitor-adapter 模块:新增 jdbc-milvus 驱动。
  • dbvisitor-driver 模块:JdbcResultSet Array 类型兼容性增强。
  • 方言系统(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 模式),统一转义逻辑到基类。
相关推荐
hz567898 小时前
涉密视频会议设备配置指南:终端、音视频采集与配套设施选型
服务器·网络·数据库·安全·实时音视频·信息与通信·智能硬件
广州浮点FLOATLIC8 小时前
许可证服务器迁移后软件打不开:研发 IT 怎样定位连接问题
linux·服务器·数据库
程序员Sunday8 小时前
MySQL 为什么使用 B+ 树索引?把范围查询、回表和覆盖索引连起来
数据库·mysql
半杯咖啡半行码8 小时前
Qt开发实战:数据库、MV 模式、QProcess与串口通信全攻略
数据库·qt
小米里的大麦9 小时前
16 MySQL 事务
数据库·mysql
西柚小萌新9 小时前
【LLM&&AI应用开发 八股文】--4.3.Agent智能体(下)
java·开发语言·数据库
十年Java程序媛9 小时前
Java 接口和抽象类对比|Java8 新特性,抛弃老旧八股,正确选型
java·spring boot·后端
邓工说电10 小时前
智慧断路器安全吗?数据加密、离线保护与合规认证全解读
大数据·数据库·人工智能·智能断路器·炜晔科技
adinnet202610 小时前
企业微调大模型(Fine-tuning):先吃透 RAG 还是先训自己的模型
大数据·数据库
上位机妹子11 小时前
EF Core 两种继承映射:每层次一张表(TPH)与每类型一张表(TPT)
数据库·c#·.netcore·ef core