那天中午,
第一次使用idea maven,
搭建ssm 从数据库查数据在jsp上面显示,
困难重重,还好有好心人远程协助,
眼看差不多了,
在我要访问的时候报了这么一个错误,
可喜的是网上有和我类似错误的人,我还有救,
查看到了这篇文章,https://www.jianshu.com/p/4e50fa289271
我试了一下,真的灵!
原因就是使用maven的时候,默认resources下才是是存放配置文件的地方,而mybatis的动态代理开发规范是要求mapper.xml文件和接口放在一起的,放在了java源码路径下,导致xml文件并没有被编译进classes文件下,少东西,所有报了这个错误.
两种解决办法:
第一,可以在pom.xml文件中添加这么一行,
<build>
<resources>
<!-- maven项目中src源代码下的xml等资源文件编译进classes文件夹, 注意:如果没有这个,它会自动搜索resources下是否有mapper.xml文件,
如果没有就会报org.apache.ibatis.binding.BindingException: Invalid bound statement
(not found): com.pet.mapper.PetMapper.selectByPrimaryKey -->
<!--将java目录下的配置文件编译进classes文件 -->
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
<include>**/*.properties</include>
</includes>
</resource>
<!--将resources目录下的配置文件编译进classes文件 -->
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*.xml</include>
<include>**/*.properties</include>
</includes>
</resource>
</resources>
</build>
<!--上面的两个resource代表把对应的directory里面的目录设置成源码目录,编译时,这两个目录下的.xml和.properties文件都会被安排到classes目录下-->
第二,在resources下面自己建立一个和mapper接口一样的路径,把mapper的配置文件放进去(此时接口目录下可以省略xml文件),也可以!!!!
谨记!!!
网友评论