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
- 记一次内存泄漏
- ES6.2.3(3节点)数据迁移到ES7.4.1(5节点)
- 弱引用示例
- Censys搜索引擎学习
- 如何安装Google BBR
- JDK8 G1 堆内存居然不释放
- MySQL锁、事务、隔离级别
- 不重启 JVM,如何替换掉已经加载的类?
- SpringBoot服务在服务启动完成前被提前注册到nacos
- Linux dev shm目录
- raft协议
- 随机毒鸡汤:黑夜给你黑色的眼睛,你却用它来翻白眼。