dbVisitor 6.6.0 正式上线!此次升级虽在框架底层改动不大,但为开发者带来的体验提升却十分显著。两大核心亮点值得关注:其一,规则 now 支持多层嵌套;其二,全新引入 case/when/else 规则结构。这意味着你可以在 SQL 模板中直接实现条件分支、参数逻辑判断,真正意义上以 SQL 风格编写动态逻辑,彻底摆脱 XML 中繁杂冗余的标签嵌套。

v6.6.0 (2026-01-25)

<dependency><groupid>net.hasor</groupid><artifactid>dbvisitor</artifactid><version>6.6.0</version></dependency>

主要亮点

  1. 支持规则嵌套——任意规则可作为子规则被其他规则调用。
  2. 新增 case/when/else 规则,并配套发布完整规则说明文档。

影响范围

  • 全面增强 dbvisitor 动态 SQL 规则引擎(如 @{and}@{or}@{in}@{case} 等)的稳定性、安全性与表达能力,让动态 SQL 更加灵活可控。

更新详情

  • 新增
    • 引入 case/when/else 规则,支持复杂条件分支逻辑。
    • 开放规则嵌套能力,允许规则内部引用其他规则(包括自身递归调用)。
  • 优化
    • jdbc-elasticjdbc-mongojdbc-redis 的连接获取流程中加入资源释放的兜底机制,提升异常场景下的健壮性。
    • 全面解除 @{and}@{or} 等规则对参数数量的硬性限制,使其可自然兼容 in 类多值规则的嵌套使用。
  • 修复
    • 修复 MD5RuleSqlArg 类型参数无法处理的问题。
    • 修正 @{and}@{or} 的空值判定逻辑:当所依赖的所有参数均为 null 时,对应 SQL 片段将自动剔除(此前存在行为不一致缺陷)。
    • 修复动态表达式中若字符串含右大括号 }(例如 #{ '}' }),解析器误判为表达式终止符的问题;该问题曾导致后续内容被错误拼接进 SQL,存在潜在 SQL 注入风险。
    • 修复引号内或函数参数中出现逗号 ,(如 @{rule, 'a,b'})时,解析器错误将其识别为规则分隔符并截断的问题。
    • 修复部分驱动适配器读取属性列表不全的问题。
  • 文档
    • 新增 case/when/else 规则专项文档,涵盖语法、示例与最佳实践。
    • 重构官网动态规则指南,新增 Rule 与传统 XML 方案的对比视图,并补充高级规则(如嵌套、组合、自定义)的详细用法说明。

源码地址:点击下载