mybatis SELECT 和 UPDATE详细流程
2020-04-26 16:23:41 1 举报
Mybatis执行流程
作者其他创作
大纲/内容
update
queryFromDatabase
List
返回参数对应关系
生成会话
BaseExecutor
cachedMapperMethod
DefaultSqlSession
build
doQuery从configuration中获取一个connection,从connecttion中获取一个Prestatementparameterize()方法为Statement进行实参绑定,即为sql中的占位符对应上参数
Configuration
newInstance
DefaultSqlSessionFactory
MapperMethod
select
getFirstResultSet
mybatis对于INSERT、UPDATE、DELETE操作都是调用update方法
getMapper
CacheKey包含调用接口idoffsetlimmitsqlparam环境id
putObject
执行update操作方法
newExecutor
keyGenerator
parseConfiguration解析全局配置文件mybatis-config.xml文件,比如获取datasource,解析mappersMybatis的映射器(mappers)有四种解析顺序从上到下<package name=\"\"/> <mapper resource=\"\"/> <mapper url=\"\"/> <mapper class=\"\"/>
ORM的体现将结果集与POJO中的属性对应
返回defaultSqlSession
KeyGenerator
parseConfiguration解析全局配置文件和映射配置文件,并将解析出来的结果都传入configuration中
MapperRegistry
Resources
XMLConfigBuilder
Configuration
new XMLConfigBuilder()
build(configuration)new DefaultSqlSessionFactory返回factory
new Configuration()
clearLocalCache清除一级缓存
parse
SqlSessionFactoryBuilder
getNamedParams
MapperProxy
PreparedStatementHandler
queryFromDatabase方法中,doQuery只后,将结果写入缓存
当调用Mapper接口的方法时,实际调用MapperProxy对象的invoke方法
BaseBuilder
convertArgsToSqlCommandParam
MappedStatement
先查二级缓存,没有继续查询
getUpdateCount获取影响条数
ParamNameResolver
flushCacheIfRequired
execute根据sql类型进行switch选择处理
获取映射
keyGenerator获取主键自增器
返回mapper代理对象
createCacheKey
getMappedStatement
SimpleExecutor
query
加载配置文件,创建DefaultSqlSessionFactory
DefaultResultSetHandler
openSession
getResourceAsStream
跟随调用链路返回
insert
prepareStatement
MapperProxyFactory
new ResultSetWrapper
CachingExecutor
根据配置获取执行器
返回configuration
根据配置获取执行器默认是SimpleExecutor默认开启一级缓存
handleResultSets
openSessionFromDataSource
doQuery
返回inputStream
execute
加载配置文件,生成会话工厂
DefaultSqlSession
doUpdate
selectList
processAfter后置执行主键自增
handleResultSet处理结果集
随调用链路返回影响条数rows
执行select操作方法
doUpdate从configuration中获取一个connection,从connecttion中获取一个Prestatementparameterize()方法为Statement进行实参绑定,即为sql中的占位符对应上参数
创建DefaultSqlSession
根据配置是否清除二级缓存
先查一级缓存,没有则查询DB
ResultSetWrapper
收藏
0 条评论
回复 删除
下一页