我使用的是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或^在受人尊敬的场景中使用CDATA或^的建议,但我尚未尝试。
问题:
<script>标记,这种行为就像预期的那样?发布于 2015-03-19 02:06:56
公平地说,这不是MyBatis中的问题,而是XML解析的行为。
如果不希望解析<和&等字符,则可以使用CDATA一词来阻止XML解析器解析此类文本。详情请参阅cdata.asp。或者可以使用<作为注释来转义它。
也就是。
<script>
SELECT * FROM STUDENT
WHERE DEPARTMENT_ID = #{depId}
<if test='joiningDate != null'>
<![CDATA[
AND STUDENT_ID <= #{joiningDate}
]]>
</if>
</script>发布于 2019-07-19 15:00:01
你也可以用这个。
<=小于或等于SELECT *来自学生,其中DEPARTMENT_ID = #{depId}
=更大
<script>
SELECT * FROM STUDENT
WHERE DEPARTMENT_ID = #{depId}
<if test='joiningDate != null'>
<![CDATA[
AND STUDENT_ID >= #{joiningDate}
]]>
</if>
</script>https://stackoverflow.com/questions/29092950
复制相似问题