MyBatis框架的工作原理

来源:互联网 发布:网络销售具体做什么 编辑:程序博客网 时间:2024/05/29 23:24

每学习一个新知识,不管是框架,还是语言,永远都是以helloworld开始的,我们的mybatis也一样是这样子的

1.获取sqlSessionFactory对象:SqlSessionFactory  sqlSessionFactory =  getSqlSessionFactory();

解析文件的每一个信息保存在Configuration中,返回包含了Configuration的DefaultSqlSession对象

注意:MappedStatement:代表一个增删改查的详细信息

----------Configuration封装了所有配置文件的信息---------总结:把配置文件的信息解析并保存在Configuratiion对象中,返回包含了Configuration的DefaultSqlSession对象

2.获取sqlSession对象:sqlSession openSession = sqlSessionFactory.openSession();

返回一个DefaultSqlSession的对象,他包含了 Executor和Configuration 

这一步会创建Executor对象


-----------返回SqlSession的实现类DefaultSqlSession的对象,他包含了 Executor和Configuration,Executor会在这一步被创建。

3.获取接口代理的对象(会为接口自动创建一个代理对象,代理对象去执行增删改查):MapperProxy

getMapper,使用MapperProxyFactory创建一个MapperProxy的代理对象

代理对象包含了DefaultSqlSession(Executor)执行增删改查


---------------getMapper返回接口的代理对象,包含了SqlSession对象-----------

4.执行增删改查的方法:


总结:

1.根据配置文件初始化出Configuration对象

2.创建出DefaultSqlSession对象

他里面包含Configuration和Executor(根据全局配置文件中的defaultExecutorType创建出对应的Executor)

3.DefaultSqlSession.getMapper():拿到Mapper接口对应的MapperProxy

4.MapperProxy里面有DefaultSqlSession

5.执行增删改查方法:

调用DefaultSqlSession的增删改查(Executor)

会创建一个StatementHandler对象(同时会创建出ParameterHandler和ResultSetHandler)

调用StatementHandler预编译参数以及设置参数值

使用ParameterHandler来给sql设置参数

调用StatementHandler的增删改查方法

使用ResultSetHandler封装结果

注意:

四大对象每个创建的时候都有一个interceptorChain.pluginAll(ParameterHandler)


 






原创粉丝点击