org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.abc.dao.IUserDao.login
时间: 2023-12-26 12:28:49 浏览: 78
出现"org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.abc.dao.IUserDao.login"的错误通常是因为MyBatis无法找到与接口方法对应的SQL语句。这可能是由于以下原因导致的:
1. 检查映射文件路径是否正确:确保映射文件的路径与配置文件中的路径一致。例如,检查映射文件的name属性是否正确设置为"com/it/dao/iAccountDao.xml"。
2. 检查映射文件中的SQL语句是否正确:确保映射文件中定义的SQL语句与接口方法名称一致,并且没有拼写错误或语法错误。
3. 检查接口方法的命名规范:MyBatis默认使用接口方法的名称来查找对应的SQL语句。确保接口方法的名称与映射文件中定义的SQL语句的id一致。
4. 检查接口与映射文件的绑定:确保接口与映射文件正确绑定。可以通过在映射文件中使用`namespace`属性指定接口的全限定名,或者使用`@Mapper`注解在接口上标记。
5. 检查配置文件中的mapper配置:确保配置文件中正确加载了映射文件。可以通过检查`<mappers>`标签下是否包含了正确的`<mapper>`标签来确认。
以下是一个示例,展示了如何解决这个问题:
```xml
<!-- mybatis-config.xml -->
<configuration>
<mappers>
<mapper resource="com/it/dao/iAccountDao.xml"/>
</mappers>
</configuration>
```
```java
// IUserDao.java
package com.abc.dao;
public interface IUserDao {
User login(String username, String password);
}
```
```xml
<!-- iAccountDao.xml -->
<mapper namespace="com.abc.dao.IUserDao">
<select id="login" resultType="com.abc.model.User">
SELECT * FROM users WHERE username = #{username} AND password = #{password}
</select>
</mapper>
```
阅读全文
相关推荐















