MyBatis 抛出 org.apache.ibatis.binding.BindingException: Invalid bound statement (not found) 错误,意味着 MyBatis 在执行 SQL 语句时,找不到对应的映射语句。

常见原因

  1. 映射文件(Mapper XML)中没有定义这个映射语句。 这是最常见的原因之一。如果你是使用 XML 方式配置 MyBatis,请确认你的映射文件中是否定义了 com.example.demo1.mapper.StudentMapper.selectList 这个映射语句。

  2. 映射文件没有被正确加载或配置,导致 MyBatis 找不到映射语句。 确保 MyBatis 的配置文件正确加载了你的映射文件。

  3. 映射语句的名称或命名空间不正确。 检查代码中调用 selectList 方法时,参数 com.example.demo1.mapper.StudentMapper.selectList 是否正确,包括命名空间和方法名。

注解方式

如果你是使用注解方式配置 MyBatis,则需要检查以下几点:

  1. 确认 com.example.demo1.mapper.StudentMapper 接口上是否使用了 @Mapper 注解,以标识这是一个 MyBatis 的映射接口。

  2. 确认 com.example.demo1.mapper.StudentMapper 接口中是否定义了名为 selectList 的方法,并且使用了 @Select 注解来绑定 SQL 语句。

  3. 确认在其他地方没有重复定义名为 selectList 的方法或语句。

  4. 确认在 Service 中调用 Mapper 方法时,使用的是正确的方法名和参数。

使用 MyBatis-Plus 的通用方法

如果你的 Mapper 接口是继承了 MyBatis-Plus 的 BaseMapper 接口,你可以尝试使用 MyBatis-Plus 提供的通用方法来查询数据,而无需再使用注解来绑定 SQL 语句,例如:

List<Student> studentList = studentMapper.selectList(null);

这里的 selectList 方法是 MyBatis-Plus 提供的通用查询方法,可以根据传入的查询条件(这里是 null)自动生成 SQL 语句,无需手动编写。

使用查询构造器

如果你需要自定义查询条件,可以使用 MyBatis-Plus 提供的查询构造器(QueryWrapperUpdateWrapper 等)来构建查询条件,例如:

QueryWrapper<Student> queryWrapper = new QueryWrapper<>();
queryWrapper.eq('name', '张三');
List<Student> studentList = studentMapper.selectList(queryWrapper);

这里的 eq 方法会生成一个等于条件,查询名字为“张三”的学生数据。你可以根据需要使用其他的查询条件来构建查询语句。

在 Service 层使用 QueryWrapper

QueryWrapper 是一个查询构造器,用于构建查询条件。你可以在 Service 层的具体方法中使用它来构建查询条件,例如:

@Service
public class StudentServiceImpl implements StudentService {

    @Autowired
    private StudentMapper studentMapper;

    @Override
    public List<Student> getStudentListByName(String name) {
        QueryWrapper<Student> queryWrapper = new QueryWrapper<>();
        queryWrapper.eq('name', name);
        return studentMapper.selectList(queryWrapper);
    }
}

这里的 getStudentListByName 方法是一个示例,用于查询名字为 name 的学生列表。在方法中,我们创建了一个 QueryWrapper 对象,并使用 eq 方法添加了一个等于条件,然后将这个条件传入了 selectList 方法中,最终返回查询结果。你可以根据具体的业务需求,使用不同的查询条件来构建查询语句。

MyBatis 异常:Invalid bound statement (not found) - 常见原因及解决方案

原文地址: https://www.cveoy.top/t/topic/lB7K 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录