spring容器正常启动但调用mapper失败——Mybatis源码分析
时间: 2023-11-21 20:04:48 浏览: 127
关于mybatis mapper类注入失败的解决方案
在Spring容器中,Mybatis的Mapper通常是通过MapperScannerConfigurer来扫描包路径并自动注册到Spring容器中的。但是,有时候我们会遇到Mapper扫描成功,但是调用Mapper方法失败的情况,这时候需要对Mybatis源码进行分析。
首先,Mybatis的Mapper是通过MapperProxy来代理的,而MapperProxy的构造函数中需要一个SqlSession对象。如果我们在调用Mapper方法时,SqlSession对象没有正确地传递进来,就会导致Mapper调用失败。
其次,MapperScannerConfigurer扫描出来的Mapper实例是通过MapperFactoryBean来创建的,而MapperFactoryBean中也需要一个SqlSession对象。如果我们在配置MapperFactoryBean时,没有正确地配置SqlSession属性,也会导致Mapper调用失败。
最后,还有一种可能是Mapper接口中的方法没有正确地配置SQL语句,这时候可以通过Mybatis的日志来查看具体的SQL语句和参数。
总之,当遇到Mapper调用失败的情况时,需要仔细地分析Mybatis的源码,逐步排查问题,并且可以通过Mybatis的日志来帮助定位问题。
阅读全文