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属性值
相同即可.