项目场景:
学习Mybatis过程中关于读取接口xml配置文件找不到的问题
问题描述:
Error building SqlSession.
The error may exist in com/example/mybatis/dao/UserDao.xml
Cause: org.apache.ibatis.builder.BuilderException: Error parsing SQL Mapper Configuration. Cause: java.io.IOException: Could not find resource com/example/mybatis/dao/UserDao.xml
然后说一下我的具体代码:通过IO流读取mybatis的配置文件,然后在配置文件中写了实体类接口的配置文件url,如:
<mappers>
<mapper resource="com/example/mybatis/dao/UserDao.xml"/>
</mappers>
如下图看到接口的包路径和接口对应xml的包路径是一样的,都是com.example.mybatis.dao
原因分析:
这里给个思路,一般找不到文件直接去target目录下找编译文件
通过编译文件可以看到那个长长的文件夹(名字)是个什么鬼,再推进看一下com文件夹中的内容
如图com文件夹中,可以看到只有UserDao.class一个编译文件,我们再进入那个长长的文件夹内
嗯?好巧,你为什么在这???
理论上UserDao.xml和UserDao.class文件应该是在同一目录下的,那么造成这个结果的原因是什么呢= =,去看一眼项目的resource目录
震惊!我明明是用IDEA创建文件夹com.example.mybatis.dao建的,怎么变成了这个样子
解决方案:
发现问题以后就好解决了,把原来的文件夹删了,然后一层一层建,最后把xml文件放进去就可以了,最后编译成功,编译文件如下图
OK,至此问题就彻底解决了