错误信息:
Request processing failed; nested exception is org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.sm.dao.SMUserLoginDao.sm_userlogin
这是我的文件结构
很多人报错是因为
1、SMUserLogin.xml文件<mapper>的namespace路径不对
2、SMUserLogin.xml文件<select>的id名和SMUserLoginDao中对应的方法名不一致
3、下面来说一下我的报错:
Request processing failed; nested exception is org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.sm.dao.SMUserLoginDao.sm_userlogin
报这个错,是因为我的mybatis的映射文件写在entity包下的,而entity包下的这个SMUserLogin.xml文件不会自动打包classes ,所以会出现找不到文件。
(src/main/java 里面的除了java文件 其他的不会打包到classes 所以会出现文件找不到的文件。)
既然不会自动打包,那么就需要配置,需要在pom.xml 中配置。
下面是pom.xml文件中的补存内容
我之前还一直疑问,在applicationContext.xml中我已经有配置过了
那是因为,applicationContext.xml中配置的是要扫描的路径 resource是打包到classes里面 才能扫描。
所以最终在pom.xml中的<build>标签中加<resources>...<resources>这一段代码就好
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
</includes>
</resource>
</resources>
4、下面再说一个我这个报错原因可以解决的方法。
因为前面说到:(src/main/java 里面的除了java文件 其他的不会打包到classes 所以会出现文件找不到的文件。)
那么我们把mybatis映射文件SMUserLogin.xml一类的映射文件放到resources中就不用在pom.xml中写<resources></resources>那一段了。
注:但是不能直接放resources文件夹 要先在里面创建一个文件夹 比如 mapper 然后修改applicationContext.xml的配置
这样处理之后,pom.xml中<resources></resources>那一段就可以删掉了。