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 configuration
PUBLIC "-//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目录下(浪费的时间已经太多了)。所以上的方法还是不行。有找到的方法的兄弟可以评论告知我,感谢!!!