MyBatis找不到Mapper.xml文件的解决方法
报错:
### Error building SqlSession.
### The error may exist in com/southwind/repository/StudentRepository.xml
### Cause: org.apache.ibatis.builder.BuilderException: Error parsing SQL Mapper Configuration. Cause: java.io.IOException: Could not find resource com/southwind/repository/StudentRepository.xml
MyBatis需要的组件主要有三个:实体类、接口类、Mapper.xml
一般配置文件都是放在resources
文件夹中,该文件夹是配置文件的根目录,java代码读取该文件夹中的xml文件不需要做其他配置,如果配置文件不在该文件夹,则需要修改pom.xml
提出两种方案:
方案一
Mapper.xml没有在MyBatis的配置文件中配置,这时需要在MaBatis的配置文件中添加一个Mapper.xml配置
<?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>
<!-- 配置Mybatis的运行环境-->
<!-- default选择数据源-->
<environments default="development">
<!-- 配置多个数据源-->
<environment id="development">
<!-- 配置JDBC的数据管理-->
<transactionManager type="JDBC"></transactionManager>
<!-- POOLED配置JDBC数据源连接池-->
<dataSource type="POOLED">
<property name="driver" value="com.mysql.cj.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/mybatis?useUnicode=true&characterEncoding=UTF-8"/>
<property name="username" value="root"/>
<property name="password" value="123456"/>
</dataSource>
</environment>
</environments>
<!-- 注册AccountMapper.cml -->
<mappers>
<mapper resource="com/southwind/repository/StudentRepository.xml"></mapper>//这里是添加的StudentRepository.xml,新增则添加一个mapper标签
</mappers>
</configuration>
方案二
检查Mapper.xml,是不是放在了java文件夹下面,java代码默认是无法读取该文件夹下的配置问价的,需要在pom.xml中配置,在<project></project>
标签中添加内容
<!--这个配置非常容易被忽略,让工程能读取java目录中的xml文件-->
<build>
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
</includes>
</resource>
</resources>
</build>
这里验证了可以将配置文件都放在resources
目录中,可以省略pom.xml中的配置,这是由于resources
是配置文件的根目录,所以在MyBatis的配置文件中添加Mapper.xml只需要这样写
<!-- 注册AccountMapper.cml -->
<mappers>
<mapper resource="UserMapper.xml"></mapper>
</mappers>