【一定要看到最后】
idea 项目中写了一个接口,用于用户登录,采用的是 xml 映射做的,目录结构如下:
运行项目,发现总是报错:
Invalid bound statement (not found): com.xxx.xx.mapper.xxx.UUserBaseMapper.login
英文字面意思就是找不到 mapper 绑定的映射关系声明,简单来讲就是找不到要执行的 sql 语句。
我查资料,网上有说 mapper 和 mapper.xml 中的 包名不一样,id 和 方法名不一样,等等,但我检查了,都是没有问题。
然后有说是 idea 编译生成项目的时候,没有将 xml 文件一起打包过去,导致找不到。
我照着这个思路去查资料,发现idea 在编译打包的时候确实默认不会将 src/main/java 路径下的 xml 文件打包过去到 target 的 classes 下,于是需要在 pom.xml 配置文件中,添加以下配置文件,明确要求 idea 在编译打包的时候,将 xml 等文件带过去:
<project>
<build>
<resources>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.yml</include>
<include>**/*.xml</include>
<include>**/*.tld</include>
<include>**/*.jsp</include>
</includes>
<filtering>true</filtering>
</resource>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.yml</include>
<include>**/*.xml</include>
<include>**/*.tld</include>
</includes>
<filtering>true</filtering>
</resource>
</resources>
</build>
</project>
可以看到上面的配置信息,明确要求 src/main/java 和 src/main/resources 下的所有带有
.properties .yml .xml .tld 后缀的文件,都在编译打包的时候带过去到 target 的 classes 下
好的,上述步骤搞定,重新 maven clean,再 重建项目,运行,发现还是会报错。
重点来了,重启 idea,重新打开项目,maven clean,再 重建项目,成功了,target 的 classes 下也有该有的文件了
运行可以访问接口,并成功访问数据库了,哈哈哈哈哈
学习加油加油加油!!!!!!