mybatis注册了mapper但是还是报错_[Mybatis] xxxMapper.xml 报错 Tag name expected

6ca356b37cf874a087ccdb9f969a5eea.png
原文地址:[Mybatis] XxxMapper.xml 报错 Tag Name Expected | 做棵大树
最近参与了一个老师的项目,项目后端选用了 Mybaits 进行数据库层的操作管理,书写 Mapper 文件期间出现了如题的错误。

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

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

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; 即可。替换后语句变为:

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

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

8996f589264d9d349122414dfdac671d.png
对应
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值