MyBatis BindingException: Invalid bound statement (not found): com.example.demo1.mapper.StudentMapper.selectList
在使用MyBatis进行数据查询时,你可能会遇到一个常见的异常:"org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)",通常出现在继承了BaseMapper的场景。这表示MyBatis无法找到对应的映射语句(Mapped Statement)。
可能的导致原因:
-
映射文件(Mapper XML)中没有定义这个映射语句。 如果你使用的是注解方式,请确保Mapper接口上使用了
@Mapper注解,并定义了对应的查询方法,方法上使用@Select注解绑定SQL语句。 -
映射文件没有被正确加载或配置。 确认MyBatis的配置文件是否正确加载了Mapper文件。
-
映射语句的名称或命名空间不正确。 检查映射语句的名称和命名空间是否正确,确保与Mapper接口中的方法名一致。
-
重复定义了方法或语句。 确认没有其他地方定义了同名的方法或语句。
解决方法:
-
检查映射文件: 确认Mapper XML文件是否包含名为
com.example.demo1.mapper.StudentMapper.selectList的映射语句。 -
检查MyBatis配置文件: 确保MyBatis配置文件正确加载了映射文件。
-
检查映射语句的名称和命名空间: 确保映射语句的名称和命名空间与Mapper接口中的方法名一致。
-
使用MyBatis-Plus的通用方法: 如果你继承了MyBatis-Plus的BaseMapper,可以使用通用方法进行查询,例如:
java List<Student> studentList = studentMapper.selectList(null);selectList方法会根据传入的查询条件(这里是null)自动生成SQL语句,无需手动编写。 -
使用查询构造器: 如果你需要自定义查询条件,可以使用MyBatis-Plus提供的查询构造器(QueryWrapper、UpdateWrapper等)来构建查询条件,例如:
java QueryWrapper<Student> queryWrapper = new QueryWrapper<>(); queryWrapper.eq("name", "张三"); List<Student> studentList = studentMapper.selectList(queryWrapper);eq方法会生成一个等于条件,查询名字为“张三”的学生数据。你可以根据需要使用其他的查询条件来构建查询语句。
注意: 如果你使用的是MyBatis-Plus的通用方法,查询方法的名称和参数要与BaseMapper接口中定义的方法一致,否则会抛出类似的异常。
最后: 如果以上方法都没有解决问题,可以尝试重新构建项目,重新生成Mapper接口和XML文件,或重启应用程序。如果问题仍然存在,可以使用MyBatis的日志功能,查看详细的SQL语句和参数信息,以便更好地定位问题。
原文地址: https://www.cveoy.top/t/topic/lB7M 著作权归作者所有。请勿转载和采集!