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>
系统推荐
- getPath vs getAbsolutePath vs getCanonicalPath
- Oh My ZSH
- JVM垃圾收集器
- 数组转树形结构只需两步
- 提取Docker镜像中的文件
- IO相关
- 你真的会拼接字符串吗?
- PasteImageIntoMarkdown插件开发
- 推荐几个适用小工具
- Git Merge 、Rebase
- vuepress-theme-hope使用心得
- 表单重复提交解决方案
- 随机毒鸡汤:几百块钱对我来说也叫钱?那是命啊!命啊!