dbVisitor 6.6.0 正式发布,本次版本更新对于框架本身是一次小小的进步,但是功能对用户的影响是深远的。核心看点有两个:1 规则允许嵌套使用了,2 新增了 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>
主要看点
- 新增 规则允许嵌套其它规则使用。
- 新增 规则文档,详细介绍了新增的 case/when/else 规则。
影响范围
- dbvisitor 动态 SQL 规则引擎 (
@{and}, @{or}, @{in}, @{case} 等),稳定性、安全性、灵活动态 SQL 表达式的能力得到提升。
更新内容
- 新增
- 新增 case/when/else 规则用于实现更加灵活的分支选择。
- 新增 规则允许嵌套其它规则使用。
- 优化
- 优化 jdbc-elastic、jdbc-mongo、jdbc-redis 在链接获取时增加释放资源的防御性编程。
- 优化
@{and}, @{or} 等规则全面解除多值限制。解除后可以适应如 in 规则的嵌套。
- 修复
- 修复
MD5Rule,用于对参数进行 MD5 加密处理,不支持 SqlArg 类型参数的问题。
- 修复
@{and}, @{or} 的空值判断逻辑,现在当条件片段中引用的所有参数均为 null 时,该片段会自动正确丢弃(此前行为不一致)。
- 修复 如果动态表达式内部包含的字符串中含有右大括号
} (例如 #{ '}' }),解析器可能会错误地将其识别为表达式结束符。
- 这会导致后续的内容被直接拼接为 SQL 片段,在特定场景下可能引发 SQL 注入风险。
- 修复 在引号字符串或函数参数中包含逗号
, 时,解析器错误地将其识别为规则分隔符的问题(如 @{rule, 'a,b'} 曾被错误截断)
- 修复 驱动适配器可能获取的属性列表不完全的问题。
- 文档
- 新增 规则文档,详细介绍了新增的 case/when/else 规则和 规则的使用方法。
- 重构了官网动态规则文档,增加了
Rule vs XML 的直观对比,并补充了高级规则的详细用法。