在使用IntelliJ IDEA对SpringBoot和MyBatis进行整合,执行查询时,页面和控制台报错:
页面错误信息:
控制台错误信息:
错误信息说是无法找到mapper接口中定义的方法....但是底层代码连接数据库是通过MyBatis自动代码生成插件插件的,不会有问题,整体项目结构如下:
百度搜索之后得知其原因,是由于IntelliJ IDEA开发工具引起的问题:该工具在编译时不会自动编译xml配置文件,只是编译了mapper目录下的UserMapper.java接口的Java文件,查看下面的target目录如下:
此问题是IntelliJ IDEA开发工具自身与Eclipse相比较的缺陷。解决以上编译问题,就需要在项目的pom.xml文件中做xml资源文件加载、编译的配置;如下所示是常用的三种路径下资源文件的配置,可根据自己情况选择性配置:
<build>
<!-- 配置资源文件加载目录,否则将有文件无法被加载;尤其是webapp目录下的jsp文件,即最后一个resource标签的配置 -->
<resources>
<!-- 加载并编译src/main/java目录下的xml文件 -->
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
</includes>
</resource>
<!-- 加载并编译src/main/resources目录下的所有文件 -->
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*.*</include>
</includes>
</resource>
<!-- 加载并编译webapp目录下的所有文件到指定路径下 -->
<resource>
<directory>src/main/webapp</directory>
<targetPath>META-INF/resources</targetPath><!-- 设定webapp下文件的编译路径 -->
<includes>
<include>**/*.*</include>
</includes>
</resource>
</resources>
</build>