Mybatis,封闭的 OR with SQL builder

Mybatis, Enclosed OR with SQL builder

我不知道如何让 MyBatis 生成一个封闭的 or 语句:

WHERE x.token = ? AND (
  (x.scene = 'A' OR x.scene = 'B'))

这是一个非常简单的操作,但他们却变得非常困难。我在 JavaDoc 中找不到它:http://static.javadoc.io/org.mybatis/mybatis/3.4.5/org/apache/ibatis/jdbc/SQL.html

当前版本的mybatis(3.4.6)无法完成

您可以像这样使用整个子表达式:

WHERE("x.token = ?");
WHERE("(x.scene = 'A' OR x.scene = 'B')");

或者如果您有 many/variable 个操作数到 OR:

,则创建您自己的函数
WHERE("x.token = ?");
WHERE(OR("x.scene = 'A'", "x.scene = 'B'"));

其中 OR 定义(使用 guava Joiner)为:

Joiner OR_JOINER = Joiner.on(" OR ");

private String OR(String ... operands) {
    return String.format("(%s)", OR_JOINER.join(operands));
}