MyBatis xml特殊字符处理
大约 2 分钟
MyBatis xml特殊字符处理
5中特殊字符
> 大于
< 小于
& &
" 双引号
' 单引号
当sql中有上面的字符的时候,需要特殊处理一下。
一
使用 <![CDATA[ ]]> 包起来。比如
<![CDATA[ >= ]]>
<![CDATA[ <= ]]>
二
使用转义序列替代
特殊字符 转义序列
< <
> >
& &
" "
' '
其他
我还遇到另外一种情况,就是xml中有个sql 大致是这样的:
select * from xxx where a::jsonb ?| array['a', 'b', 'c']
-- 场景是pgsql.
-- 这个sql是想查询 a这里中,包含了 a 或 b 或 c 3个元素任意一个的那些数据,其中a列存储的事json数组,类似 ["xxxx1","xxxx2","xxx3"]
-- sql中的 ?| 是一个操作符,而非参数
这种情况,即使使用 <![CDATA[ ]]>
把 ?|
包起来,mybatis仍然会解析为一个参数,导致执行异常。
解决办法就是在xml中 写成 ??|
,如下:
<select id="xxxx" resultType="com.xxxxx">
select * from xxxx where
<![CDATA[ a ??| ]]>
<foreach item="item" index="index" collection="list" open="array[" separator="," close="]">
#{item}
</foreach>
</select>
系统推荐
- 记一次内存泄漏
- 手把手教你制作Cookie、Local、Session数据导出插件
- kafka
- 数据同步方案
- linux_no_space_left_on_device
- Spring Boot升级到2 6 x踩的坑
- Arthas使用记录
- ES杂项
- PostgreSQL JSON类型字段常用操作
- https和http混用解决办法
- Linux
- BBR加速
- 随机毒鸡汤:人生就像拉屎,也许你努力半天,结果就出来一个屁。