Invalid bound statement (not found) mapper.EmployeeMapper.selectEmployeeLikeName
错误提示
Exception in thread "main" org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): mapper.EmployeeMapper.selectEmployeeLikeName at org.apache.ibatis.binding.MapperMethod$SqlCommand.<init>(MapperMethod.java:225) at org.apache.ibatis.binding.MapperMethod.<init>(MapperMethod.java:48) at org.apache.ibatis.binding.MapperProxy.cachedMapperMethod(MapperProxy.java:65) at org.apache.ibatis.binding.MapperProxy.invoke(MapperProxy.java:58) at com.sun.proxy.$Proxy2.selectEmployeeLikeName(Unknown Source) at test.BindTest.main(BindTest.java:19)
分析
拼写错误:
Mapper.xml文件中select语句的id和Mapper接口中的方法名不相同
EmployeeMapper.xml
<!-- 测试bind属性 --> <select id="seletEmployeeLikeName" resultType="domain.Employee"> <!-- 创建OGNL表达式并绑定到上下文的pattern属性中 --> <!-- _parameter表示传递的Employee对象 --> <!-- _parameter.getName()表示调用参数(Employee对象)的getName方法 --> <!-- 两个下划线`__`是like子句的通配符,一个下划线可以匹配一个字符,两个下划线表示可以匹配两个字符 --> <!-- like子句还有一个通配符%(百分号)这个通配符可以匹配任意多个字符 --> <!-- 整个表达式表示匹配以_parameter.getName()获取到的员工名字开通,并且后面还有两个任意字符的字符串 --> <bind name="pattern" value="_parameter.getName()+'__'"/> <!-- 通过mybatis表达式获取上下文中的pattern属性值 --> select * from tb_employee where loginname like #{pattern} </select>
EmployeeMapper.java
package mapper; ...... public interface EmployeeMapper { ...... List<Employee> selectEmployeeLikeName(Employee employee); ...... }
解决方案
使Mapper
接口中的方法名和Mapper.xml
中的select
方法的id
属性值
相同即可.