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">
<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>
<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>
<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>
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<filtering>false</filtering>
</resource>
</resources>
</build>
吐槽一下:网上的资料太多的相互复制,找资料的真的头大,千篇一律,一言难尽
|