news 2026/8/31 22:14:58

mybatis 文件里面的特殊符号处理

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
mybatis 文件里面的特殊符号处理

在 MyBatis 的 XML 映射文件中,特殊符号的处理是一个经典的“坑”,主要分两种情况:SQL 语句里的特殊字符MyBatis 自身的占位符冲突

针对你问的“满杯的死面文件”(我猜是“MyBatis 的 XML 文件”),下面这四种场景的处理方案最常用:

1. 比较运算符<>>=<=(最常踩的坑)

在 XML 里,尖括号<>会被解析为标签,直接写><会导致解析失败。

✅ 推荐用<![CDATA[ ]]>包裹

xml

<select id="query" resultType="..."> <![CDATA[ SELECT * FROM table WHERE age >= 18 AND status <> 0 AND create_time <= NOW() ]]> </select>

✅ 也可以用实体符号代替

  • <=写成&lt;=

  • >=写成&gt;=

  • <>写成&lt;&gt;!=

2. LIKE 语句中的%_

这两个是 SQL 的通配符,直接写在#{}里会被当作字面值,但如果你写的是'%${value}%',会有 SQL 注入风险。

✅ 正确做法:在 Java 代码里拼好通配符,用#{}传进去

java

// Java 代码 String keyword = "%" + text + "%";

xml

<!-- XML 文件 --> <select id="search" resultType="..."> SELECT * FROM table WHERE name LIKE #{keyword} </select>

3. 与 MyBatis 占位符冲突(${}#{}的边界问题)

有时候你的 SQL 里需要用到${}这种字符串拼接,但里面的内容本身就有},或者你想用${}传一个表名进来。

✅ 比较稳妥的方式:区分业务逻辑,能不用${}就尽量不用,如果要用,参数必须在上游做白名单校验

4. 注释里的特殊符号

XML 的注释<!-- -->里面不能有连续的两个短横线--,否则会报错。

xml

<!-- 错误写法:里面有 -- SELECT 1 -- 这是一个注释 --> <!-- 正确写法:去掉 -- -->

🎯 一个“万能”解决方案:用<![CDATA[ ]]>

如果你懒得记这些规则,直接在 XML 的 SQL 外层套一个<![CDATA[ ]]>标签,里面的内容就不会被 XML 解析器干扰,你可以随便写><&这些符号。

记住:#{}${}放在 CDATA 里面是无效的,会被当作普通字符串处理。所以要把占位符放在 CDATA 外面。

xml

<select id="safeQuery" resultType="..."> <![CDATA[ SELECT * FROM table WHERE age >= 18 ]]> AND name = #{name} </select>

你是在写>=<=时报错了,还是在用LIKE模糊查询时遇到问题?如果是前者,直接套CDATA就行。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/31 22:12:38

AutoForm在A柱下内板冲压工艺分析中的常见问题与解决策略

开了第二个“2/2”篇&#xff0c;正好把A柱下内板这类深拉延零件剩下的高频问题一次讲清楚。上一篇文章重点讲过拉延成形初判、拉延筋布置和压料面匹配&#xff0c;这一篇集中处理后半段&#xff1a;边缘开裂、回弹补偿、翻边波浪、起皱与开裂冲突、材料利用率、成形不足以及左…

作者头像 李华
网站建设 2026/8/31 22:11:45

京东校招数据分析笔试全解析:SQL、概率统计与业务案例

1. 这份笔试题的“味道”&#xff1a;它到底在筛选什么样的人2019年京东校招数据分析工程师的笔试&#xff0c;我前前后后给不少准备校招的同学讲过。很多人拿到这套题的第一反应是“怎么这么杂”——SQL、概率论、业务案例、机器学习基础&#xff0c;甚至还有一点A/B测试的影子…

作者头像 李华
网站建设 2026/8/31 22:09:51

138、动态编程(Dynamic Programming)

138、动态编程(Dynamic Programming) 昨晚盯着个“字段符号未赋值”的dump看了半小时,最后发现是动态读取数据库表时,字段名大小写被数据库连接参数给坑了。这种问题你写死代码永远遇不到,一旦玩动态编程,各种妖魔鬼怪全冒出来。今天这篇笔记,就把我在ABAP动态编程里踩…

作者头像 李华
网站建设 2026/8/31 22:07:40

MATLAB Simulink三相短路暂态仿真从建模到波形分析

做电力系统课程设计或毕业设计时&#xff0c;三相短路仿真是一个绕不开的经典题目。很多同学从教材上读懂了短路电流的冲击过程和衰减规律&#xff0c;但一到 MATLAB/Simulink 里搭建模型&#xff0c;就不知道该从哪里拖模块&#xff0c;故障模块怎么配置&#xff0c;波形为什么…

作者头像 李华
网站建设 2026/8/31 22:05:00

Linux下STM32CubeIDE 1.19.0从.ioc配置文件导入工程报错排查

如果你在Linux上用STM32CubeIDE 1.19.0从已有的.ioc配置文件导入工程时&#xff0c;碰上一堆莫名其妙的报错&#xff0c;别急。我前几天也遇到了同样的问题&#xff0c;折腾了大半天&#xff0c;最后从配置文件解析、工作区路径、环境依赖三个方向一步步排查才搞定。这篇文章基…

作者头像 李华