跳到主要内容

自定义规则

当 dbVisitor 内置规则无法满足需要时。可以通过自定义方式拓展所需规则。

1. 实现 SqlBuildRule 接口
import net.hasor.dbvisitor.internal.OgnlUtils;
import net.hasor.dbvisitor.dynamic.rule.SqlBuildRule;
public class MyRule implements SqlBuildRule {
@Override
public boolean test(SqlArgSource data, DynamicContext context, String activeExpr) {
return StringUtils.isBlank(activeExpr) || Boolean.TRUE.equals(OgnlUtils.evalOgnl(activeExpr, data));
}

@Override
public void executeRule(SqlArgSource data, DynamicContext context,
SqlBuilder sqlBuilder, String activeExpr,
String ruleValue) {
...
SqlArg arg = new SqlArg(expr, value, sqlMode, jdbcType, javaType, typeHandler);
sqlBuilder.appendSql("?", arg);
}
}
2. 注册规则
RuleRegistry.DEFAULT.register("myrule", new MyRule());
3. 使用规则
select * from `test_user` @{myrule, true, xxxx}