148_Java_SpringMybatis_Mybatis_原理&流程

举报
alexsully 发表于 2021/08/26 15:36:01 2021/08/26
【摘要】 流程 四大对象

执行流程

1 获取sqlSessionFactory对象:
        解析文件的每一个信息保存在Configuration中,返回包含Configuration的DefaultSqlSession;
        [MappedStatement]: 代表一个增删改查的详细信息
        SqlSessionFactory build = new SqlSessionFactoryBuilder().build(inputStream);


        
2 获取sqlSession对象
         返回一个DefaultSQlSession对象,包含Executor和Configuration; 同时会创建Executor对象;
      SqlSession sqlSession = build.openSession();


      
3 获取接口的代理对象(MapperProxy)
         getMapper,使用MapperProxyFactory创建一个MapperProxy的代理对象代理对象里面包含了,DefaultSqlSession(Executor)
        EmployeeMapper mapper = sqlSession.getMapper(EmployeeMapper.class);


        
4 执行增删改查方法
  Employee em1 = mapper.getEmpById(5);

MyBatis在四大对象

• Executor (update, query, flushStatements, commit, rollback, getTransaction, close, isClosed) 
• ParameterHandler (getParameterObject, setParameters) 
• ResultSetHandler (handleResultSets, handleOutputParameters) 
• StatementHandler (prepare, parameterize, batch, update, query) 

总结:
  1 根据配置文件(全局,sql映射)初始化出Configuration对象
  2 创建一个DefaultSqlSession对象,他里面包含Configuration以及
		Executor(根据全局配置文件中的defaultExecutorType创建出对应的Executor)
  3 DefaultSqlSession.getMapper(): 拿到Mapper接口对应的MapperProxy;
  4 MapperProxy里面有(DefaultSqlSession);
  5 执行增删改查方法:
	1) 调用DefaultSqlSession的增删改查(Executor);
	2) 会创建一个StatementHandler对象(同时也会创建出ParameterHandler和ResultSetHandler)
	3) 调用StatementHandler预编译参数以及设置参数值;使用ParameterHandler来给sql设置参数
	4) 调用StatementHandler的增删改查方法;
	5) ResultSetHandler封装结果
	
注意:四大对象每个创建的时候都有一个interceptorChain.pluginAll(parameterHandler);
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。