问题:Mybatis提示Tag name expected
原因:
当我们在mapper中编写sql语句的时候会发现使用"<“符号会提示一个Tag name
expected。这是因为xml文件中不识别”<"符号和“&”符号。防止与xml本身的元素命名混淆,导致无法解析的情况。
- 小于
<
<
相当于 小于
<
注意:分号记得加上去
- 小于等于
≤
<=
相当于 小于等于
<=
解決方式一:
使用预定义字符來代替,直接填写预定义字符:
字符 | 预定义字符 |
---|---|
< | < |
> | > |
" | " |
’ | ' |
& | & |
解决方法二:
使用 <![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
和空字符串 ''
<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報錯