跳到主要内容

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-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 的直观对比,并补充了高级规则的详细用法。