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));
}
我不知道如何让 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));
}