mybatis工作流程2

流程:
1、通过mybatis环境等配置信息构造SqlSessionFactory即会话工厂;

把配置文件mybatis-config.xml里面的一个个节点分别解析到Configuration对象内保存。

重点在于映射器的解析。

XMLMapperBuilder:解析mapper.xml;

xmlConfigbuilder:解析mybatis-config.xml;

XMLStatementBuilder:mapper中的sql通过parseStatementNode解析成MappedStatement;

2、由会话工厂创建sqlSession即会话,操作数据库需要通过sqlSession进行

3、mybatis底层自定义了Executor执行器接口操作数据库,Executor接口有两个实现,一个是基本执行器、一个是缓存执行器。

基本执行器:通过Configuration指定executorType(SIMPLE, REUSE重用, BATCH批处理)来创建对应Executor。

简单执行器:是 MyBatis 中默认使用的执行器,每执行一次 update 或 select,就开启一个 Statement 对象,用完就直接关闭 Statement 对象(可以是 Statement 或者是 PreparedStatment 对象)。

重用执行器:重用指的是重复使用 Statement,它会在内部使用一个 Map 把创建的 Statement 都缓存起来,每次执行 SQL 命令的时候,都会去判断是否存在基于该 SQL 的 Statement 对象,如果存在 Statement 对象并且对应的 connection 还没有关闭的情况下就继续使用之前的 Statement 对象,并将其缓存起来。因为每一个 SqlSession 都有一个新的 Executor 对象,所以我们缓存在 ReuseExecutor 上的Statement 作用域是同一个 SqlSession。

批处理执行器,用于将多个SQL一次性输出到数据库;

缓存执行器:缓存执行器,先从缓存中查询结果,如果存在,就返回;如果不存在,再委托给 Executor delegate 去数据库中取,delegate 可以是上面任何一个执行器。

4、对sql执行输入参数进行定义,包括HashMap、基本类型、pojo,Executor通过 Mapped Statement在执行sql前将输入的java对象映射至sql中,输入参数映射就是jdbc编程中对preparedStatement设置参数

5、statementHandler用于封装JDBC中的statement操作,即声明sql,设置参数、执行sql等;执行器中每执行一次SQL操作,都会通过Configuration 构建一个新的StatementHandler

6、执对sql执行输出结果进行定义,包括HashMap、基本类型、pojo,Executor通过 Mapped Statement在执行sql后将输出结果映射至java对象中,输出结果映射过程相当于jdbc编程中对结果的解析处理过程。

7、执行正常则事务提交到DB,异常则回滚
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值