按照上述方法,我的自定义拦截器不报错了,然后我项目也启动了,但是我调用某个接口查询数据库的时候,报错了,org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.cvte.mapper.UserMapper.getUser。我确定是因为我用了上述方法把自定义拦截器注册到bean之后财报错的
时间: 2023-12-14 17:16:37 浏览: 71
解决org.apache.ibatis.binding.BindingException: Invalid bound statement (not found
5星 · 资源好评率100%
这个错误可能是因为你的自定义拦截器对 MyBatis 的配置造成了影响。你可以尝试检查一下你的拦截器是否正确地实现了 Interceptor 接口,并在配置文件中正确地注册了拦截器。
如果你已经确认拦截器的实现没有问题,那么可以考虑将拦截器的注册方式改为使用 Java 代码进行注册。具体来说,可以在 MyBatis 的配置类中使用 addInterceptor 方法来注册自定义拦截器,例如:
```
@Configuration
@MapperScan("com.cvte.mapper")
public class MyBatisConfig {
@Autowired
private MyInterceptor myInterceptor;
@Bean
public SqlSessionFactoryBean sqlSessionFactoryBean(DataSource dataSource) {
SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();
sqlSessionFactoryBean.setDataSource(dataSource);
sqlSessionFactoryBean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:mapper/*.xml"));
// 注册自定义拦截器
Interceptor[] interceptors = {myInterceptor};
sqlSessionFactoryBean.setPlugins(interceptors);
return sqlSessionFactoryBean;
}
}
```
这样,你就可以通过 Java 代码注册自定义拦截器,而无需在配置文件中进行注册了。
阅读全文