MyBatis测试表达式中的AND运算符是否在评估期间短路?

Mar*_*ark 3 java mybatis

MyBatis中的测试表达式中的AND关键字是否使用短路实现?例如,我写了以下内容:

<when test="pagingInstruction != null
            and pagingInstruction.direction.toString() == 'FORWARD'">
...
</when>
Run Code Online (Sandbox Code Playgroud)

如果第一个操作数解析为false,第二个操作数是否会被忽略?(我正在使用MyBatis v3.0.4.)

DwB*_*DwB 5

虽然在参考文档中没有说明when元素的测试属性短路,但是参考文档包括仅在when元素的测试属性短路时才起作用的示例.

这个例子与你的相似; 这里是:

... stuff
<when test="author != null and author.name != null">

解决问题的最简单方法可能是创建一些简单的单元测试来确定myBatis如何处理"和".

此外,您可能需要pageInstruction.direction在调用之前测试非null pageInstruction.direction.toString().