关于spring/springboot如何注入mybatis的

1.注入sqlSessionFactory
2.注入.MapperFactoryBean(它的属性是:sqlSessionFactory和Dao)
3.MapperFactoryBean 是一个 FactoryBean工厂类,当 ioc调用getBean的时候,调用的是它的 getObject方法,并且只会调用一次,因为 Factory接口里面 有一个 isSingle方法 默认是true返回单例的,getObject执行的时候,也是动态代理执行的,只会返回 一个单例对象

注意:依赖注入mapper的时候,给mapper赋值的时候(==调用context.getBean(mapper)),不是直接获取的mapperFactoryBean,而是底层调用了 mapperFactoryBean的getObject方法创建 mapper的方法(有sqlSessionFactory就可以创建sqlSession,有Dao,就可以调用sqlSession.getMapper(Dao.class)获取mapper)
3.所以,我们获取的mapper是单例的
4.但是当我们执行mapper的方法的时候,底层调用mapper的proxy代理类去执行,sqlSession. crud (mapper的方法名,param),这里的sqlSession是新new出来的,所以虽然mapper是单例的,但是sqlSession是多个的,所以在非事务,每次都是不同的sqlSession在执行

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值