【Mybatis学习】Mybatis的解析和运行简要介绍

Mybatis运行原理简要分析

1.SqlSessionFactory的构建

SqlsessionFactory主要用来创建SqlSession,为了构建SqlsessionFactory,需要提供配置文件以及相关参数。
构建主要分为2步:
  1. 解析配置文件并生成Configuration对象。
  2. 通过Configuration创建SqlSessionFactory。

1.1构建Configuration

它的作用如下:
  1. 读取配置文件,包括基础配置的XML和映射器的文件。
  2. 初始化基础配置信息,如properties全局参数、settings设置、typeAliases别名、typeHandler类型处理器、ObjectFactory对象、plugin插件、environment环境、Mapper引射器、数据库标识。
  3. 提供单例,为后续创建SessionFactory服务并提供配置的参数。
  4. 执行一些重要的对象方法,初始化配置信息。

1.2映射器的组成

一般由3部分组成。
  1. MappedStatement,保存映射器的一个节点(select/insert/delete/update)。包括配置的SQL、SQL的id、缓存信息、resultMap、resultType、parameterType、languageDriver等。
  2. SqlSource,提供BoundSql对象的地方,是上面部分的一个属性。是一个接口,用来组装SQL。
  3. BoundSql,用于建立SQL和参数。
其中BoundSql提供3个主要的属性:
  1. parameterMappings:一个List用来描述参数信息,比如属性、名称、表达式、javaType、jdbcType、typeHandler等。并与PreparedStatment结合来设置参数。
  2. paeameterObject:用于传递简单对象、POJO、Map、@Param注解的参数。传递简单对象,如int、String、double,将他们包装为对应的对象传递;POJO、Map报出不变;传递多个参数是,如有@Param注解则变为Map<String,Object>对象,类似于如下所示,可以使用#{param1}或者#{1}去引用第一个参数。
    {"1":p1,"2":p2,...,"param1":p1,"param2":p2,...}
    如果使用@Param注解,则会把注解中的字段作为Map对象中的key。

  3. sql,即在映射器中编写的每条SQL。

1.3构建SqlSessionFactory

		String resource = "mybatis.xml";
		InputStream inputStream = Resources.getResourceAsStream(resource);
		SqlSessionFactory ssf = new SqlSessionFactoryBuilder().build(inputStream);

2.SqlSession的运行

2.1映射器的动态代理

Mapper映射过程不仅利用了动态代理模式,还有命令模式。

2.2SqlSession的对象

通过执行以下4个步骤来完成数据库操作和结果返回。
  1. Executor执行器,调度以下3种对象来执行对应的SQL。
  2. StatementHandler使用数据库的Statement/PreparedStatement执行操作。
  3. ParameterHandler用于SQL对参数的处理。
  4. ResultHandler封装数据集Result并返回。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值