您的位置:首页 > 其它

MyBatis框架的工作原理

2017-10-23 20:25 288 查看
每学习一个新知识,不管是框架,还是语言,永远都是以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.[b]DefaultSqlSession.getMapper():拿到Mapper接口对应的MapperProxy[/b]

4.MapperProxy里面有[b]DefaultSqlSession[/b]

5.执行增删改查方法:

调用[b]DefaultSqlSession的增删改查(Executor)[/b]

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

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

使用ParameterHandler来给sql设置参数

调用StatementHandler的增删改查方法

使用ResultSetHandler封装结果

注意:

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






 



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: