MyBatis xml特殊字符处理
大约 3 分钟
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>
系统推荐
- RSA 加密解密多语言实现方案
- KVM 虚拟机安装
- 弱引用示例
- 数组转树形结构只需两步
- Censys搜索引擎学习
- IO相关
- 批量修改git历史记录中的用户名和邮箱
- PasteImageIntoMarkdown插件开发
- Markdown软件比对
- Nginx的双向认证配置
- 免费 API 每日提供摸鱼日报,自动返回无水印图片,适用于公众号和小程序
- Hbase 总览
- 随机毒鸡汤:月老麻烦下次为我牵红线,能换成钢丝吗?红线老TM断。