不同插件使用相同框架(mybatis)遇到找不到mapper的问题
-
我有两个插件,里面均用到了mybatis框架,它们单独放进plugins里的时候是可以正常使用的。但是两个插件同时使用的时候就会报:
org.apache.ibatis.binding.BindingException: Type interface xxx is not known to the MapperRegistry.
已经检查:namespace类名正确,文件名与java名一致,mybatis配置文件也已经注册mapper
请问应该怎么解决呢? -
检查 Mapper 的定义是否有重复
-
@cssxsh 检查过了,没有重复
-
@toukou-yuu
配置方式?
有可能配置相互覆盖了 -
@cssxsh
两个xml文件除了数据库和mapper不同,其他都类似,请问您说的覆盖是指?
如果会覆盖的话,要怎么解决呀?<configuration> <environments default="mysql"> <!--mysql的环境--> <environment id="mysql"> <!--事务的类型--> <transactionManager type="JDBC"/> <!--数据源--> <dataSource type="POOLED"> <!--数据库信息--> <property name="driver" value="com.mysql.cj.jdbc.Driver"/> <property name="url" value="jdbc:mysql://server:port/**dbA**?rewriteBatchedStatements=TRUE"/> <property name="username" value="xxx"/> <property name="password" value="xxx"/> </dataSource> </environment> </environments> <mappers> <mapper resource="A.xml"/> <mapper resource="B.xml"/> <mapper resource="C.xml"/> </mappers> </configuration>
-
@toukou-yuu
主配置文件名 一样吗 -
@cssxsh 文件名一样的,现在改掉之后又报了找不到配置文件的错误。。(文件名引用的地方也改了)
java.io.IOException: Could not find resource xxx.xml
原来两个配置文件都是
mybatis-config.xml
,读取文件用的Resources.getResourceAsStream("")
方法。
用原来的名字是能找到配置文件的,改了就找不到了(比如eng-mybatis-config.xml
),就觉得很奇怪。。 -
@toukou-yuu
感觉大概率确实是配置文件重名的问题,但是现在又卡在io问题上了,问了一圈也找不到办法。
不管怎么说,还是帮大忙了,非常感谢 -
@toukou-yuu
Resources.getResourceAsStream("")
和类加载器有关
插件语境下需要切换类加载器