Mybatis 1.原理流程图
仅用来做个人笔记记录。
总流程:
- 根据配置文件(全局配置文件和sql映射文件)初始化configuration对象。
- 创建一个defaultSqlSession对象,包含Configuration及Executor(根据全局配置文件中defaultExecutorType创建对应的Executor)
-
DefaultSqlSession.getMapper拿到Mapper接口对应的MapperProxy
-
MapperProxy里有DefaultSqlSession
- 执行增删改查
1、调用DefaultSqlSession增删改查
2、创建StatementHandler
(同时创建ParameterHandler,ResultSetHandler)
3、调用StatementHandler预编译参数以及设置参数值
使用ParameterHandler给sql设置参数
4、调用StatementHandler增删改查
5、ResultSetHandler封装结果
mybatis 四大对象:
executor、parameterHandler、ResultSetHandler、StatementHandler
步骤详解:
- 获取SqlSession:
解析文件的信息保存到Configuration中,返回Configuraation的DefaultSqlSession对象;【mappedStatement】代表一个增删改查的详细信息
无论是我们自定义的还是第三方预先定义的,只要是我们使用的每条sql语句都会生成一个mappedStatements
-
获取SqlSession
- 获取接口代理对象MapperProxy
- 执行增删改查
从ms(mappedStatements)中获取Configuration。StatementHandler 与编译参数以及设置参数值。简单说就是生成要执行的sql语句。
设置参数,执行sql语句。
execute点进去后执行的方法。把替代的参数打印出来。根据方式,执行jdbc的增删改查(设计到数据库连接池)。
再往后对查询到的结果进行映射 resultSetHandler.handleCursorResultSets(ps)。