报错内容
Exception in thread "main" org.apache.ibatis.exceptions.PersistenceException:
### Error building SqlSession.
### The error may exist in com/casey/mapper/UserMapper.xml
### Cause: org.apache.ibatis.builder.BuilderException: Error parsing SQL Mapper Configuration. Cause: java.io.IOException: Could not find resource com/casey/mapper/UserMapper.xml
at org.apache.ibatis.exceptions.ExceptionFactory.wrapException(ExceptionFactory.java:30)
at org.apache.ibatis.session.SqlSessionFactoryBuilder.build(SqlSessionFactoryBuilder.java:82)
at org.apache.ibatis.session.SqlSessionFactoryBuilder.build(SqlSessionFactoryBuilder.java:66)
at com.casey.UserMapper.main(UserMapper.java:18)
Caused by: org.apache.ibatis.builder.BuilderException: Error parsing SQL Mapper Configuration. Cause: java.io.IOException: Could not find resource com/casey/mapper/UserMapper.xml
at org.apache.ibatis.builder.xml.XMLConfigBuilder.parseConfiguration(XMLConfigBuilder.java:122)
at org.apache.ibatis.builder.xml.XMLConfigBuilder.parse(XMLConfigBuilder.java:99)
at org.apache.ibatis.session.SqlSessionFactoryBuilder.build(SqlSessionFactoryBuilder.java:80)
... 2 more
Caused by: java.io.IOException: Could not find resource com/casey/mapper/UserMapper.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:378)
at org.apache.ibatis.builder.xml.XMLConfigBuilder.parseConfiguration(XMLConfigBuilder.java:120)
... 4 more
报错说找不到我 xml 文件,上网查询后,发现是 idea 的 bug,src 的 xml 要通过编译必须在 pom.xml 的 build 结点加上这一段
<build>
<!-- 配置idea可以编辑src/main/java下的xml文件 -->
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>*/**/*.xml</include>
</includes>
<filtering>true</filtering>
</resource>
</resources>
</build>
再次编译还是一样的报错,但是 target 的 xml 已经有了,只是目录的层次错误了
此时我看见了这篇 blog
mybatis- Error parsing SQL Mapper Configuration. Cause: java.io.IOException: Could not find resource
我寻思咱们应该是同一个问题,于是我也重建了目录,不行;重建模块,不行。
后来才发现,加的 build 结点那一段,我自己路径没配好。。好蠢噢
<resource>
<!-- directory:指定资源文件的位置 -->
<directory>src/main/java</directory>
<includes>
<!-- “**” 表示任意级目录 “*”表示任意文件 -->
<!-- mvn resources:resources :对资源做出处理,先于compile阶段 -->
<include>*/*/**/*.xml</include>
</includes>
<!-- filtering:开启过滤,用指定的参数替换directory下的文件中的参数(eg. ${name}) -->
<filtering>false</filtering>
</resource>
这样就可以了~