mybatis总结

在 Mybatis 中,每一个应用都是基于 SqlSessionFactory 为核心。SqlSessionFactory 的实例可以通过 SqlSessionFactoryBuilder 获得

通过SqlSessionFactoryBean获取SqlSessionFactory,读取配置,通过获取配置的mapperLocations解析mapper对应的xml文件,添加MappedStatement到Configuration的mappedStatements字段的map中,以该xxxmapper的类路径.方法名为key,MappedStatement为value,注册mapper到MapperRegistry的knowMappers属性中,以该xxxmapper的class对象为key,MapperProxyFactory对象为value,
knowMappers只添加接口,其他忽略不做处理。
最后SqlSessionFactoryBuilder 通过 XML 配置文件 或一个 预先配置的 Configuration 实例创建SqlSessionFactory实例.

spring创建实例时调用SqlSession的getMapper方法,调用MapperRegistry的getMapper方法,获取knowMappers中存放的MapperProxyFactory实例,MapperProxyFactory运用jdk动态代理方式创建该mapper接口的代理对象,其中动态代理类为MapperProxy.当每次调用目标接口方法的时候都是调用MapperProxy的invoke方法。

invoke方法中,调用MapperMethod的excute方法,通过判断SqlCommand属性的type值,执行相应的增删改查方法,即调用sqlSession对象的方法,在sqlSession方法中,通过jdk动态代理增强,获取sqlSession,再执行目标方法,先传入statementId(方法Id)获取Configuration的mappedStatements字段的相应value值,即MappedStatement实例,然后传入MappedStatement和参数调用Executor的方法,创建连接执行sql等等

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值