XML fragments parsed from previous mappers does not contain value for 问题
·
在使用mybatis-plus时,我通过<include>引用外部的xml的sql数据。然后就出现了一下的报错:
Caused by: java.lang.IllegalArgumentException: XML fragments parsed from previous mappers does not contain value for com.****.BaseInfo
BaseInfo就是定义在其他xml的<sql>的id。
我的代码绝对没有问题(解决问题之后我才坚信这一点)。网上有很多答案,什么版本啊,id重复了,id对不上。但是我的都不是。
我的理解是mybatis-plus的解析<include>的逻辑要晚于解析<select>等节点。虽然我不知道对不对,但是就我的发现大概是这样的。
所以如果我们执行查询语句时,会导致他解析不到<include>中的外部引用。这里我发现只要开始执行语句就会扫描扫描所有的mapper.xml。所以即便我们执行的语句中不包含<include>。也会有问题。但是,如果我们<include>的语句是在同一个<sql>下就没有问题。
而我的代码是在@PostConstruct注解中执行sql查询。所以有问题。我试了一下,如果试实现ApplicationContextAware的类也不能执行
以上是我的发现。具体为什么不想再看了,这个问题纠结了我一天多,烦!!!!!
更多推荐
所有评论(0)