规则传参
在 SQL 中通过 @{...} 的方式传递参数并调用内置规则引擎处理。这种方式允许 SQL 语句根据参数值动态变化,而无需编写复杂的 if/else 或 XML 标签。
为什么使用规则
- 简洁直观:摆脱繁杂的 XML 标签(如 MyBatis 的
<if>,<foreach>),让 SQL 回归 SQL。 - 智能处理:自动处理空值判断、前缀/后缀处理(如自动去除多余的 AND/OR 或逗号)。
- 功能强大:内置了
and、or、in、set、case等丰富规则,满足绝大多数动态 SQL 需求。
基本示例
以最常见的 AND 规则为例,它可以智能地根据参数 (:name) 是否为空来决定是否拼接查询条件:
-- 使用 @{and, ...} 规则
select * from users where id > :id @{and, name = :name}
- 如果
name不为空:生成... where id > ? and name = ? - 如果
name为空:规则自动忽略,生成... where id > ?
更多规则
dbVisitor 提供了丰富的内置规则(如 in 集合查询、set 动态更新、case 分支判断等),甚至支持自定义规则。