MyBatis的运行原理

来源:互联网 发布:平面设计软件百度云 编辑:程序博客网 时间:2024/06/11 17:00
构建SqlSessionFactory的过程
1.通过解析配置的XML文件,读出配置参数,并将读取的数据存入Configuration类中
2.使用Configuration对象去创建SqlSessionFactory,SqlSessionFactory是一个接口(使用DefaultSqlSessionFactory)

构建Configuration

作用:
1.读入配置文件(包括基础配置的XML文件和映射器的XML文件)
2.初始化基础配置,比如别名,一些重要的类对象
3.提供单例,为后续创建SessionFactory服务并提供配置的参数
4.执行一些重要的对象方法,初始化配置信息

读出的配置信息保存到Configuration类的单例中

映射器的组成
1.MappedStatement:保存映射器的一个节点(select|insert|delete|update),包括许多我们配置的SQL,SQL的id
resultMap,parameterType,resultType等重要配置内容
2.SqlSource:提供BoundSql对象的地方
3.BoundSql:建立SQL和参数的地方,他有3个常用属性(SQL,parameterObject,parameterMappings)
parameterObject为参数本身(如果使用@Param,就相当于把parameterObject变成一个Map<String,Object>对象)
SQL就是映射器中的一条SQL
parameterMappings是一个List,每一个元素都是一个parameterMapping对象,(参数包括属性,名称,表达式,javaType,jdbcType,typeHandler等重要信息)

SqlSession的四大对象
Executor代表执行器,由它来调度StatementHandler,ParameterHandler,ResultHandler
StatementHandler:使用Statement执行操作,它是四大对象的核心,起到承上启下的作用
ParameterHandler用于SQL对参数的处理
ResultHandler是进行最后数据集(resultSet)的封装返回处理的

update:Executor会先调用StatementHandler的prepare()方法预编译SQL,同时设置一些基本运行的参数,
然后调用ParameterHandler的parameterize()方法启用ParameterHandler设置参数,完成预编译,
如需要查询,就用ResultHandler封装结果返回调用者
query:用typeHandler处理结果类型,然后用ObjectFactory提供的规则组装对象,返回给调用者


0 0