firemail

标题: Mybatis源码学习 [打印本页]

作者: java    时间: 2019-1-14 17:30
标题: Mybatis源码学习
本帖最后由 java 于 2019-1-14 17:32 编辑

看源码学习的东西很多

SqlSessionFactory  全局跟容器一起 application级别
SqlSession  request/method级别
Mapper     method级别 Spring不一样



MapperProxyFactory
MapperProxy
Mapper

动态代理  接口变实例

Proxy.newProxyInstance(mapperInterface.getClassLoader(), new Class[] {mapperInterface }, ...)


com.gupaoedu.mybatis.mapper.TestMapper
com.gupaoedu.mybatis.mapper.TestMapper@12344
org.apache.ibatis.binding.MapperProxy@653444

MapperProxy
Mybatis源码不实现对象实现类,会调用自己实现的

MapperMethod.java
selectOne -> selectList -> Executor.query



抽象类中定义模板流程 增加可扩展性

装饰器模式是 委托模式的一种
被包装类与这个类是不是同源的即同一个父类,就是装饰器模式






MyBatis5.png (89.37 KB, 下载次数: 484)

MyBatis5.png





欢迎光临 firemail (http://firemail.wang:8088/) Powered by Discuz! X3