我用的是java7、spring 3和mybatis
Pom.xml
<org.mybatis-version>3.2.8</org.mybatis-version>
<org.mybatis-spring-version>1.2.2</org.mybatis-spring-version>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>${org.mybatis-version}</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>${org.mybatis-spring-version}</version>
</dependency>
在使用基于注释的 Select 时,我遇到了一个奇怪的问题,下面提到的代码由于使用 <(小于)而 >(大于)按预期工作而抛出异常。
<script>
SELECT * FROM STUDENT
WHERE DEPARTMENT_ID = #{depId}
<if test='joiningDate != null'> AND STUDENT_ID <= #{joiningDate} </if>
</script>
谷歌搜索一段时间后,我发现了下面报告的这个问题。
https://code.google.com/p/mybatis/issues/detail?id=787
可以通过将 <(小于)替换为 <
来解决上述问题如下所示。
<script>
SELECT * FROM STUDENT
WHERE DEPARTMENT_ID = #{depId}
<if test='joiningDate != null'> AND STUDENT_ID <= #{joiningDate} </if>
</script>
我还遇到了在我尚未尝试过的受人尊敬的场景中使用 CDATA 或 ^ 的建议。
问题:
- 我的问题是这个问题不应该由 Mybatis 团队解决(至少对常用查询标签进行特定于 xml 的转换)或者这种行为是预期的,因为我们正在使用
<script>
标记 ?? - 有没有我错过的替代解决方案?
最佳答案
公平地说,这不是 MyBatis
中的问题, 但 XML 解析的行为。
如果你不想要像<
这样的字符和 &
要解析,您可以使用术语 CDATA
以防止 XML 解析器解析此类文本。请引用http://www.w3schools.com/xml/xml_cdata.asp详细信息。或者你可以使用 <
来逃避它作为评论。
即.
<script>
SELECT * FROM STUDENT
WHERE DEPARTMENT_ID = #{depId}
<if test='joiningDate != null'>
<![CDATA[
AND STUDENT_ID <= #{joiningDate}
]]>
</if>
</script>
关于java - Mybatis : "less than" issue in Select annotations,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29092950/