在用idea搭建ssm架构时,启动项目,浏览器访问web服务遇到BindingException的错误,从字面理解就是mapper接口没有被实例化。
一、首先按照一般语法性错误排查,文件名或者包名不正确:
1、检查xml文件所在的package名称是否和interface对应的package名称一一对应
2、检查xml文件的namespace是否和xml文件的package名称一一对应
3、检查函数名称与mapper文件中的id是否一致
4、去掉xml文件中的中文注释
二、检查在配置文件中扫描mapper接口文件的包名是否有问题。
例如:spring配置文件中”basePackage” 属性包名的指定一定要具体到接口所在包,而不要写父级甚至更高级别的包 ,否则可能出现问题;cn.dao 与cn.*也可能导致错误;注解扫描时,可能没有扫描到包等。
<!-- 配置mapper扫描器,SqlSessionConfig.xml中的mapper配置去掉 -->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<!-- 指定扫描的包 -->
<property name="basePackage" value="com.kkb.ssm.mapper"/>
</bean>
三、以上都没有问题,最后检查编译是否有问题,发现target/class文件夹中的文件缺少mapper.xml文件.
原因是:在使用IDEA中,如果打包时*.xml没有自动复制到class输出目录下,需要在pom文件中添加mybatis加载配置文件的配置
<build>
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
</includes>
</resource>
<resource>
<directory>src/main/resources</directory>
</resource>
</resources>
</build>