我不知道如何让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')");
或者,如果要创建的操作数很多/可变,则创建自己的函数 OR :
OR
WHERE("x.token = ?"); WHERE(OR("x.scene = 'A'", "x.scene = 'B'"));
哪里 或 定义(使用 guava Joiner )作为:
或
Joiner OR_JOINER = Joiner.on(" OR "); private String OR(String ... operands) { return String.format("(%s)", OR_JOINER.join(operands)); }