MyBatis 大于等于、小于等于
在 MyBatis 的 XML 映射文件中,由于 XML 语法的限制,不能直接使用 <
和 >
符号(会被解析为 XML 标签),需要使用转义字符或 CDATA 块来表示大于等于(≥)和小于等于(≤)。
以下是常用的写法:
1. 使用转义字符(推荐)
xml
<!-- 大于等于:≥ -->
<if test="startTime != null">AND create_time >= #{startTime}
</if><!-- 小于等于:≤ -->
<if test="endTime != null">AND create_time <= #{endTime}
</if>
对应的转义字符对照表:
>
表示>
(大于)<
表示<
(小于)>=
表示>=
(大于等于)<=
表示<=
(小于等于)
2. 使用 CDATA 块
如果觉得转义字符可读性差,可以用 CDATA 块包裹包含特殊符号的 SQL 片段:
xml
<if test="startTime != null"><![CDATA[ AND create_time >= #{startTime} ]]>
</if><if test="endTime != null"><![CDATA[ AND create_time <= #{endTime} ]]>
</if>
CDATA 块中的内容会被 MyBatis 原样解析,不进行 XML 语法检查。
注意事项
- 在注解方式的 SQL 中(如
@Select
),可以直接使用>=
和<=
,无需转义 - 动态 SQL 中使用时,注意结合
<if>
标签做非空判断,避免出现null
值导致的 SQL 错误
两种方式效果相同,根据团队编码规范选择即可,转义字符方式在多数项目中更常见。