0.mybatis四大对象
Executor : 执行器
parameterHandler : 参数解析器
statementHandler : sql解析器
resultsetHandler : 结果集解析器
1.SqlSessionFactory初始化
0.大致流程
当调用SqlSessionFactoryBuilder.build()时,会先通过XMLConfigBuilder类去解析mybatis配置文件的全部信息并存入configuration,随后再解析mappers标签,方法中通过XMLMapperBuilder类去解析mapper映射文件中的全部信息存入configuration并将每个增删改查标签的全部信息组成为一个个单独的MappedStatement,存入configuration的MappedStatements中。
此时configuration已经包含了mybatis配置文件和mapper映射文件的全部详细信息,其中增删改查的详细信息是在MappedStatements集合中,mapper接口的代理类对象是在MapperRegistry中。
随后将configuration返回给SqlSessionFactory并作为参数传入SqlSessionFactory.build()方法中,返回的是DefaultSqlSessionFactory对象。
1.向SqlSessionFactoryBuilder.build()方法传入输入流
2.创建全局配置文件解析器
3.解析全局配置文件中每一个标签,并且把详细信息填入configuration对象
4.解析mapper映射文件每一个标签并保存在全局配置中
一个mappedStatement就代表一个增删改查标签的详细信息,并保存至configuration的mappedStatements中
5.返回封装了所有信息的configuration
6.通过返回的configuration创建一个DefaultSqlSessionFactory
7.整体过程
2.获取sqlsession对象
3.获取接口的代理对象(mapper)
4.执行方法
5.mybatis运行原理
1.通过加载mybatis全局配置文件以及mapper映射文件初始化configuration对象和Executor对象(通过全局配置文件中的defaultExecutorType初始化);
2.创建一个defaultSqlSession对象,将configuration对象和Executor对象注入给defaulSqlSession对象中;
3.defaulSqlSession通过getMapper()获取mapper接口的代理对象mapperProxy (mapperProxy中包含defaultSQLSession对象)
4.执行增删改查:
1)通过defaulSqlSession中的属性Executor创建statementHandler对象;
2)创建statementHandler对象的同时也创建parameterHandler和 resultSetHandler;
3)通过parameterHandler设置预编译参数及参数值;
4)调用statementHandler执行增删改查;
5)通过resultsetHandler封装查询结果