出现这个问题的原因很明显:mybatis没有在配置文件中找到 接口定义的的方法。
一般先检查以下
-
mapper.xml的namespace要写所映射接口的全称类名。
-
mapper.xml中的每个statement的id要和接口方法的方法名相同
-
mapper.xml中定义的每个sql的parameterType要和接口方法的形参类型相同
-
mapper.xml中定义的每个sql的resultType要和接口方法的返回值的类型相同
但是我遇到的情况与以上都不一样
我的mapper.xml 直接放在了resources目录下 我的mapperlocations是这样定义的
<property name="mapperlocations">
<array>
<value>classpath:*Mapper.xml</value>
</array>
</property>
然后编译执行报BindingException Invalid bound statement 。
后来把上述配置改为
<property name="mapperlocations">
<array>
<value>classpath*:*Mapper.xml</value>
</array>
</property>
顺利执行
或者在resources目录下再建一个mybatis目录 并把配置改为
<property name="mapperlocations">
<array>
<value>classpath:mybatis/*Mapper.xml</value>
</array>
</property>
也顺利执行
具体原因 改日再查源码