赞
踩
Mybatis四大对象:
执行过程四大步骤:
parser是一个XPathParser,做一个基于Dom4j的XPath解析工具
计算configuration节点,这个configuration节点呢就是我们全局配置文件中的
上面这里就是解析mybatis-config.xml里面的内容
从properties中获取每一个全局能设置的项,并保存在configuration这个对象中
解析mappers标签
源码解析mappers标签
举例解析select|insert|update|delete
statementParser.parseStatementNode();
builderAssistant.addMapperdStatement方法返回MapperStatement对象
CTRL+ALT+B 查看实现类的方法
注意这个configuration
里面的defaultExecutorType
SIMPLE就是一个简单的执行器
REUSE就是一个可复用的执行器
BATCH批量操作的执行器
先是getEnvironment获取到环境对象
创建事务
创建Executor对象
这里根据Executor在全局配置中的类型创建出BatchExecutor | ReuseExecutor | SimpleExecutor CachingExecutor实际上用的还是executor只是简单的包装了一下
interceptorChain.pluginAll(executor) 拦截器链的方法
拿到所有的拦截器,拿到每一个拦截器,调用每一个拦截器的plugin方法
把目标对象进行包装
alt + 7 查看 Executor的所有方法
ctrl + alt + b查看实现类
MapperRegistry的getMapper方法
this.kownMappers.get(type)根据接口类型获取MapperProxyFactory
然后调用newInstance(sqlSession)
动态代理创建
上面的动态代理方法执行查询语句详细分析
这里判断method是不是jdk的Object方法,如果是jdk的方法就直接执行,如果不是就执行 this.cachedMapperMethod(method) 进行包装成一个MapperMethod,然后执行
selectOne其实就是查的selectList,只是取到List的第一个元素
getBoundSql代表sql语句的详细信息
上面获取MappedStatement
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。