本文主要是介绍maven导出异常:MapperRegistry、Mapper.xml、mybatis-config.xml,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
1. 错误一
1.1 错误信息
org.apache.ibatis.binding.BindingException: Type interface com.zy.dao.UserDao is not known to the MapperRegistry.
1.2 原因分析
没有Mybatis的核心配置文件Mybatis-config.xml中注册新建的Mapper
1.3 解决方式
在Mybatis的配置文件Mybatis-config.xml中注册新建的UserMapper
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configurationPUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd">
<!--Mybatis核心配置文件-->
<configuration><environments default="development"><!-- 开发库--><environment id="development"><transactionManager type="JDBC"/><dataSource type="POOLED"><property name="driver" value="com.mysql.jdbc.Driver"/><property name="url"value="jdbc:mysql://localhost:3306/mybatis?useSSL=true&characterEncoding=UTF-8&serverTimeZone=GMT"/><property name="username" value="root"/><property name="password" value="mysql123"/></dataSource></environment></environments><!--定义好的Mapper要在mybatis配置文件中注册,不然它找不到--><mappers><mapper resource="com/zy/dao/UserMapper.xml"/></mappers>
</configuration>
2. 错误二
2.1 错误信息
The error may exist in com/zy/dao/UserMapper.xml
Cause: org.apache.ibatis.builder.BuilderException: Error parsing SQL Mapper Configuration. Cause: java.io.IOException: Could not find resource com/zy/dao/UserMapper.xml
2.2 原因分析
Mybatis在解析Mapper映射时没找到我们刚才配置的映射。去代码编译生成的target中找果然没找到。
什么原因呢?其实是maven在项目启动构建的时候默认是不支持打包我们自建的xml或者properties配置文件的。
2.3 解决方案
就是在项目的pom.xml配置文件中添加maven在build打包时搜索的文件路径和支持的文件格式
<build>
<!-- 在build中添加resources节点,来防止我们资源导出失败的问题 -->
<resources><resource><directory>src/main/resources</directory><excludes><exclude>**/*.properties</exclude><exclude>**/*.xml</exclude></excludes><filtering>false</filtering></resource><resource><directory>src/main/java</directory><includes><include>**/*.properties</include><include>**/*.xml</include></includes><filtering>false</filtering></resource>
</resources>
</build>
3. 错误三
3.1 错误信息(未解决)
Could not find resource mybatis-config.xml
3.2 原因分析
通过观察可以发现,在我们向pom.xml配置文件中添加打包时搜索的文件范围和支持的文件格式之前,在打包时是会把我们的mybatis-config.xml配置文件打包到target目录下的,此时的报错是找不到mapper.xml,在添加了build-resources配置之后,打包了mapper.xml,但又缺少了mybatis-comfig.xml。所以问题就是我们添加的build-resources配置有问题,上面的build-resources配置中src/main/resources是说在打包时要打包src/main/resources目录下的内容,而通过刚才的现象,其实maven打包时默认就是会把src/main/resources目录下的文件打包到target目录的,所以这个配置就是多余的。基于这个推理,就尝试注释了pom.xml中src/main/resources的配置
,运行之后发现就没有报错了,在打包目录target下mybatis-config.xml和UserMapper.xml都有了
3.3 解决方案
注释掉pom.xml配置中duild-resources中的src/main/resources配置
(注意:注释掉上面的配置后一定要clear原有的maven打包目录,重启idea,目的就是清除旧配置的缓存
)
<build><!-- 在build中添加resources节点,来防止我们资源导出失败的问题 --><resources><!--<resource>--><!--<directory>src/main/resources</directory>--><!--<excludes>--><!--<exclude>**/*.properties</exclude>--><!--<exclude>**/*.xml</exclude>--><!--</excludes>--><!--<filtering>false</filtering>--><!--</resource>--><resource><directory>src/main/java</directory><includes><include>**/*.properties</include><include>**/*.xml</include></includes><filtering>false</filtering></resource></resources>
</build>
这个问题几天后打开IDEA重新运行之后又出现了,最终手动把mybatis-config.xml放到target/classes目录下(浪费的时间已经太多了)。所以上的方法还是不行。有找到的方法的兄弟可以评论告知我,感谢!!!
这篇关于maven导出异常:MapperRegistry、Mapper.xml、mybatis-config.xml的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!