MyBatis中的测试表达式中的AND关键字是否使用短路实现?例如,我写了以下内容:
<when test="pagingInstruction != null
and pagingInstruction.direction.toString() == 'FORWARD'">
...
</when>
Run Code Online (Sandbox Code Playgroud)
如果第一个操作数解析为false,第二个操作数是否会被忽略?(我正在使用MyBatis v3.0.4.)
虽然在参考文档中没有说明when元素的测试属性短路,但是参考文档包括仅在when元素的测试属性短路时才起作用的示例.
这个例子与你的相似; 这里是:
... stuff <when test="author != null and author.name != null">
解决问题的最简单方法可能是创建一些简单的单元测试来确定myBatis如何处理"和".
此外,您可能需要pageInstruction.direction在调用之前测试非null pageInstruction.direction.toString().