在 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 错误
两种方式效果相同,根据团队编码规范选择即可,转义字符方式在多数项目中更常见。
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。
发表评论