MyBatis mapper.xml 中SQL处理小于号与大于号

170 阅读1分钟

这种问题在xml处理sql的程序中经常需要我们来进行特殊处理。

其实很简单,我们只需作如下替换即可避免上述的错误:

<<=>=&'"
<<=>>=&'"

例如常见的时间比较:

错误写法

	<select id="findByTerminalNumber" parameterType="pd" resultType="pd">
		select
		<include refid="Field"></include>
		from
		<include refid="tableName"></include>
		AS m
		WHERE
		NOT EXISTS (SELECT 1 FROM <include refid="tableName"></include> WHERE TERMINAL_NUMBER = m.TERMINAL_NUMBER
		AND
		m.ALARM_TIME < ALARM_TIME
		) AND
		TERMINAL_NUMBER = #{TERMINAL_NUMBER}
	</select>

  正确写法

	<select id="findByTerminalNumber" parameterType="pd" resultType="pd">
		select
		<include refid="Field"></include>
		from
		<include refid="tableName"></include>
		AS m
		WHERE
		NOT EXISTS (SELECT 1 FROM <include refid="tableName"></include> WHERE TERMINAL_NUMBER = m.TERMINAL_NUMBER
		AND
		m.ALARM_TIME &lt; ALARM_TIME
		) AND
		TERMINAL_NUMBER = #{TERMINAL_NUMBER}
	</select>