MyBatis的工作原理

MyBatis的工作流程:
1)读取Mybatis的配置文件:mybatis-config.xml是mybatis的全局配置文件,包括其运行环境;
2)加载Mapper映射文件:SQL映射文件中配置了数据库操作的sql语句,每个映射文件对应数据库中一张表,需要在mybatis-config.xml中进行加载,mybatis-config.xml文件可以加载多个映射文件。
3)构造SqlSessionFactory对象:根据配置文件中的数据库连接、数据源、事务管理等配置信息构建SqlSessionFactory对象
4)创建会话对象Sqlsession:通过SqlSessionFactory对象创建Sqlsession对象,Sqlsession对象内部封装了执行SQL语句的所有方法,由SqlSession执行对数据库的操作,并返回最终的处理结果;
在这里插入图片描述
SqlSession的四大对象:
1)Executor对象:是一个接口,根据SqlSession对象传递的信息找到对应的Statement,执行相应的语句; MyBatis存在三种执行器:

  • SimpleExecutor:简易执行器,默认的执行器
  • ReuseExecutor:一种执行器重用预处理语句
  • BatchExecutor:执行器重用语句和批量更新,会批量执行所有更新语句

在Executor接口的执行方法中有一个MappedStatement类型的参数,该参数是对映射信息的封装,用于存储要执行的SQL语句的id,参数等信息;
2)StatmentHandler对象:根据映射文件中配置,使用数据库的Statement执行操作,是四个对象的核心;和Executor一样,MyBatis也提供了三种会话处理器;

  • SimpleStatmentHandler:
  • PreparedStatmentHandler:对应JDBC里面的PreparedStatement类
  • CallableStatmentHandler:对应JDBC里面的CallableStatement类

3)ParameterHandler对象:用于SQL对参数的处理(对预编译语句进行参数处理);
4)ResultHandler对象:对最后返回的结果集(ResultSet)进行封装;

SqlSession的执行过程:
SqlSession通过Executor创建StatementHandler来运行的,而StatementHandler要经过下面三步:

  • prepareed预编译SQL
  • parameterize设置参数(通过调用ParameterHandler进行设置的,参数时根据类型处理器typeHandler进行处理的)
  • query/update执行SQL(通过resultHanler进行处理结果的封装,执行update语句会返回整数,否则通过typeHandler处理结果类型,然后用ObjectFactory提供的规则组装对象,返回给调用者)
    在这里插入图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值