IDEA编写MyBatis测试程序时报错:Could not find resource com/XXX/dao/IUserDao.xml(三种常见错误及其解决方案)

注意环境是idea + maven
最近学习MyBatis框架的基本原理,在测试代码时出现以下错误:

Exception in thread "main" org.apache.ibatis.exceptions.PersistenceException: 
### Error building SqlSession.
### The error may exist in com/XXX/dao/IUserDao.xml
### Cause: org.apache.ibatis.builder.BuilderException: Error parsing SQL Mapper Configuration. Cause: java.io.IOException: Could not find resource com/XXX/dao/IUserDao.xml
	at org.apache.ibatis.exceptions.ExceptionFactory.wrapException(ExceptionFactory.java:30)
	at org.apache.ibatis.session.SqlSessionFactoryBuilder.build(SqlSessionFactoryBuilder.java:80)
	at org.apache.ibatis.session.SqlSessionFactoryBuilder.build(SqlSessionFactoryBuilder.java:64)
	at com.XXX.test.MybatisTest.main(MybatisTest.java:29)
Caused by: org.apache.ibatis.builder.BuilderException: Error parsing SQL Mapper Configuration. Cause: java.io.IOException: Could not find resource com/XXX/dao/IUserDao.xml
	at org.apache.ibatis.builder.xml.XMLConfigBuilder.parseConfiguration(XMLConfigBuilder.java:121)
	at org.apache.ibatis.builder.xml.XMLConfigBuilder.parse(XMLConfigBuilder.java:99)
	at org.apache.ibatis.session.SqlSessionFactoryBuilder.build(SqlSessionFactoryBuilder.java:78)
	... 2 more
Caused by: java.io.IOException: Could not find resource com/XXX/dao/IUserDao.xml
	at org.apache.ibatis.io.Resources.getResourceAsStream(Resources.java:114)
	at org.apache.ibatis.io.Resources.getResourceAsStream(Resources.java:100)
	at org.apache.ibatis.builder.xml.XMLConfigBuilder.mapperElement(XMLConfigBuilder.java:371)
	at org.apache.ibatis.builder.xml.XMLConfigBuilder.parseConfiguration(XMLConfigBuilder.java:119)
	... 4 more

于是在网上查找了许多相关资料。

注意环境是idea + maven

大致原因分为以下几点:

  1. xml文件放在src下的java目录中而不是resources文件夹中,idea默认编译resources下的导致找不到文件。类似下面:
    IDEA编写MyBatis测试程序时报错:Could not find resource com/XXX/dao/IUserDao.xml(三种常见错误及其解决方案)_第1张图片
    这种情况的解决方案已经有博主详细解答了,传送门mybatis错误——java.io.IOException: Could not find resource com/xxx/xxxMapper.xml

  2. 目录分级错误,注意是多级目录:com/mybatis/IUserDao.xml而不是一级目录:com.mybatis.IUserDao.xml,如果是第二种会出现下面这种情况,
    ![在这里插入图片描述](https://img-blog.csdnimg.cn/20200414115705819.png
    这样就只是一级目录而不是多级目录,这是idea默认的。

    解决方案:创建时应先创建con文件夹在创建mybatis文件夹以保证多级目录。

  3. 目录名称或者文件名称写错了(我自己犯的就是这种错误),下面是错误示例
    在这里插入图片描述
    解决方案:修改掉错误的地方就可以了。

你可能感兴趣的:(MyBatis,Java)