【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 相关代码
【Java】打包后程序报错:Type interface XXX is not known to the MapperRegistry.

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中的实现
【Java】打包后程序报错:Type interface XXX is not known to the MapperRegistry.

注意

你可能需要导入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

回到顶部