【Java】打包后程序报错:Type interface XXX is not known to the MapperRegistry.
1 问题描述
框架使用springboot,项目在开发过程中可以在eclipse中正常测试。但是一旦使用打包后就会抛出Type interface XXX is not known to the MapperRegistry.
此异常。
我已经检查过打包后的jar包,jar包中确实存在xml文件,也不存在namespace写错的可能性。 mapper接口和xml文件也是在一个包中的。
我是使用的java配置,没有使用xml配置文件。
2 相关代码
3 报错信息
Caused by: org.apache.ibatis.binding.BindingException: Type interface XXX is not known to the MapperRegistry.
4猜测的原因
我的mapper和xml文件是另外一个项目的jar文件中,是不是这个原因造成的呢?如果是怎么解决呢?
回答
出错的原因
具体的原因是mybatis在通过mybatisConfig.addMappers
方法扫描mapper和xml文件时,不能够扫描到嵌套的jar包中的文件。而我使用的是springboot打包成的可执行jar包。所以才会出现此错误。
解决方案
mybatis使用VFS执行具体的扫描,可以将其实现替换成mybat/spring-boot-starter中的实现
注意
你可能需要导入mybatis-springboot-starter
<dependency> <groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.1</version>
</dependency>
参考文档
http://blog.csdn.net/cml_blog...
以上是 【Java】打包后程序报错:Type interface XXX is not known to the MapperRegistry. 的全部内容, 来源链接: utcz.com/a/88723.html