java 发表于 2019-1-14 17:30:36

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



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

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






页: [1]
查看完整版本: Mybatis源码学习