在Spring Boot项目中整合MyBatis-Plus后遇到org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)
错误,通常意味着MyBatis无法找到你尝试调用的方法对应的SQL映射。对于selectPage
方法的报错,可能是以下原因导致的:
Mapper接口未被正确扫描:
确保你的Mapper接口被Spring Boot正确扫描到。你可以通过在主应用类或配置类上添加@MapperScan
注解来指定Mapper接口所在的包。
@SpringBootApplication
@MapperScan("com.sky.mapper")
public class Application {
// ...
}
缺少XML映射文件或注解:
如果你使用的是XML映射文件,确保这些文件的位置和命名符合MyBatis的要求,并且与Mapper接口对应。如果你使用的是注解方式,则需要确保Mapper接口上有相应的注解。
依赖问题:
检查你的pom.xml
(如果你使用Maven)或build.gradle
(如果你使用Gradle),确保你引入了正确的MyBatis-Plus版本,并且没有冲突的依赖。
MyBatis-Plus版本兼容性:
不同版本的MyBatis-Plus可能对方法的支持有所不同,特别是像selectPage
这样的增强方法。确保你使用的MyBatis-Plus版本支持你想要调用的方法。
分页插件配置:
MyBatis-Plus的分页功能需要分页插件的支持。确认你在配置类中已经正确地注册了分页插件。
@Configuration
public class MyBatisPlusConfig {
@Bean
public PaginationInterceptor paginationInterceptor() {
return new PaginationInterceptor();
}
}
方法签名不匹配:
selectPage
方法有一个特定的签名,它接受两个参数:一个IPage<T>
类型的分页对象和一个Wrapper<T>
类型的查询条件封装器。如果方法调用时传递的参数类型不对,也会导致找不到绑定的方法。
重启应用程序:
有时候IDE的缓存可能会导致一些问题,尝试清理项目并重启你的Spring Boot应用。
检查日志输出:
查看启动时的日志输出,确保MyBatis-Plus和所有Mapper接口都被正确加载。如果有任何警告或错误信息,它们可能会提供线索。
代码示例:
下面是一个简单的EmployeeMapper
接口示例,以及如何使用selectPage
方法。
public interface EmployeeMapper extends BaseMapper<Employee> {
// 自定义查询可以放在这里
}
// 使用selectPage方法
IPage<Employee> page = new Page<>(current, size);
employeeMapper.selectPage(page, null); // 如果不需要查询条件,传入null