首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >[Mybatis] xxxMapper.xml 报错 Tag name expected

[Mybatis] xxxMapper.xml 报错 Tag name expected

作者头像
做棵大树
发布2022-09-27 19:55:01
发布2022-09-27 19:55:01
57700
代码可运行
举报
文章被收录于专栏:代码日志代码日志
运行总次数:0
代码可运行

最近参与了一个老师的项目,项目后端选用了 Mybaits 进行数据库层的操作管理,书写 Mapper 文件期间出现了如题的错误。

我们知道,Mybatis 文件的数据库操作都是在 Mapper 文件中实现的,而 Mapper 文件的主体内容也就是 SQL 语句。

所以一般我在写 Mapper 文件中的方法前,会首先在 Navicat 中写 SQL 进行核验,同时也进行语句的修改调试。今天这个错误,发生在一个需要比较时间的需求背景下,我们知道在 SQL 语句中,对于时间的比较十分方便,我们只需要使用 < / <= / = / > / >= 这一类比较运算符直接操作即可。于是,我再 Navicat 中书写了如下的 SQL 语句(部分)进行查询:

代码语言:javascript
代码运行次数:0
运行
复制
SELECT product_type type,IFNULL(COUNT(DISTINCT p.id), 0) sum
FROM product p, delivery d

WHERE 
p.id = d.order_id AND
p.deadline < d.maildate AND

-- 其他条件省略

GROUP BY p.product_type

以上语句在 Navicat 中查询正常,但等转到了对应的 Mapper 文件中,却发生了错误,有红色波浪线出现在了 d.maildate AND 下方,鼠标放上去显示 :Tag name expected

经查询,在 XML 文件中,一些符号具有特殊的意义,所以需要进行替换或转义避免否则就会发生错误。> 不会,但是 < 却会。

因此,我们需要将 < 替换为 &lt; 即可。替换后语句变为:

代码语言:javascript
代码运行次数:0
运行
复制
SELECT product_type type,IFNULL(COUNT(DISTINCT p.id), 0) sum
FROM product p, delivery d

WHERE 
p.id = d.order_id AND
p.deadline &lt; d.maildate AND

-- 其他条件省略

GROUP BY p.product_type

< 号可替换为,还有其余几种也可进行替换。> 虽然是合法可用的,但也是推荐使用实体引用来替换的哦。

实体引用

原字符

含义

&gt;

>

greater than

&lt;

<

less than

&amp;

&

ampersand

&apos;

'

apostrophe

&quot;

"

quotation mark


本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-07-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 做棵大树 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档