idea - 报错 Mybatis提示Tag name expected的问题< 小于号 无法识别

问题:Mybatis提示Tag name expected

原因:

当我们在mapper中编写sql语句的时候会发现使用"<"符号会提示一个Tag name

expected。这是因为xml文件中不识别"<"符号和"&"符号。防止与xml本身的元素命名混淆,导致无法解析的情况。

  1. 小于 <
bash 复制代码
&lt;
相当于  小于
<

注意:分号记得加上去

  1. 小于等于
bash 复制代码
&lt;=
相当于 小于等于
<=

解決方式一:

使用预定义字符來代替,直接填写预定义字符:

字符 预定义字符
< &lt;
> &gt;
" &quot;
' '
& &amp;

解决方法二:

使用 <![CDATA[ ]]> 语法

?CDATA說明:

在XML中, <![CDATA[ ]]> 是一個字符數據的語法,用于在XML文檔中表示純文本內容,而不需要對其中的內容進行XML標記解析。

在給定的語法中, <![CDATA[<=]]> 表示一個字符串"<=",其中字符"<"和"="不被視為XML標記的一部分,因為它們被包含在 <![CDATA[ ]]> 標記中。這意味著XML解析器將這個字符串視為純文本數據,而不會嘗試將其解釋為XML標記或實體引用。

CDATA標記通常用于在XML文檔中嵌入一些包含XML保留字符或其他特殊字符的文本內容,例如HTML代碼或JavaScript代碼等。使用CDATA標記可以避免這些特殊字符與XML標記語法沖突,同時確保它們在XML文檔中保持原樣,而不會被解釋為XML標記。

在方括号内 [ ] 输入之前会报错的字符,比如是小于号,那么就在方括号内写入小于号

如下所示:

<![CDATA[<]]> 相当于 小于号,能够让 xml 文件内的小于号 被识别,否则就会报Tag name expected 的错误。

具体例子:

条件是 数据库内某个表 test_table 限定查询条件是该表的字段名 number 必须是小于等于 传参的值 #{number},而且前提是传参的 #{number},必须不能为 null 和空字符串 ''

xml 复制代码
<select id="getTestDate" resultType="com.test.entity.TestEntity">
 SELECT * FROM test_table
<where>
	<if test="number!=null and number.trim() neq ''">
		AND number <![CDATA[<=]]> #{number}
	</if>
</where>
</select>

参考链接

1. Mybatis提示Tag name expected的问题

2. Tag name expected 解决

3. idea編輯XML文件出現:Tag name expected報錯

4. batis映射文件xml不能使用"<",tag name expected

5. idea編輯XML文件出現:Tag name expected報錯

相关推荐
寻星探路5 小时前
【深度长文】万字攻克网络原理:从 HTTP 报文解构到 HTTPS 终极加密逻辑
java·开发语言·网络·python·http·ai·https
曹牧8 小时前
Spring Boot:如何测试Java Controller中的POST请求?
java·开发语言
爬山算法8 小时前
Hibernate(90)如何在故障注入测试中使用Hibernate?
java·后端·hibernate
kfyty7259 小时前
集成 spring-ai 2.x 实践中遇到的一些问题及解决方案
java·人工智能·spring-ai
猫头虎9 小时前
如何排查并解决项目启动时报错Error encountered while processing: java.io.IOException: closed 的问题
java·开发语言·jvm·spring boot·python·开源·maven
李少兄9 小时前
在 IntelliJ IDEA 中修改 Git 远程仓库地址
java·git·intellij-idea
忆~遂愿9 小时前
ops-cv 算子库深度解析:面向视觉任务的硬件优化与数据布局(NCHW/NHWC)策略
java·大数据·linux·人工智能
小韩学长yyds9 小时前
Java序列化避坑指南:明确这4种场景,再也不盲目实现Serializable
java·序列化
仟濹9 小时前
【Java基础】多态 | 打卡day2
java·开发语言
Re.不晚9 小时前
JAVA进阶之路——无奖问答挑战2
java·开发语言