MyBatis 工作流程

mybatis工作流程分析

首先MyBatis启动的时,需要解析配置文件,包括全局配置文件和映射器配置文件,解析成Configuration对象。

然后,通过SqlSession对象,对数据进行操作(SqlSession是我们操作数据库的接口,它在应用程序和数据库中间,代表我们跟数据库之间的一次链接)。SqlSession的创建需要通过SqlSessionFactory创建,SqlSessionFactory里面包含所有的配置信息,通过SqlSessionFactoryBuilder创建工厂类。

MyBatis是对JDBC的封装,里面包含JDBC的核心对象,例如执行SQL的Statement,结果集ResultSet。在MyBatis里面,SqlSession只是提供给应用的一个接口,不是SQL的真正执行对象。SqlSession持有的Executor对象,是真正对数据库进行操作的。Executor对象里面封装了对数据库的具体操作。

 

mybatis架构分层和模块划分

mybatis分为接口层、核心处理层、基础层。

接口层

与我们打交道最多的就是接口层。核心对象是SqlSession,SqlSession定义了对数据库的操作方法。接口层在收到调用请求的适合,会调用核心处理层的相应模块完成具体的数据库操作。

核心处理层

跟数据库操作相关的动作都在这一层完成。

核心处理层主要工作:

  1 把接口传入的参数解析并映射成JDBC类型

  2 解析xml文件中的SQL语句,包括插入参数和动态SQL的生成

  3 执行SQL语句

  4 处理结果集,并映射成java对象

基础支持层

基础支持层主要是一些抽取出来的通用功能,用来支持核心处理层的功能。比如数据源、日志、缓存,反射、IO、事务等功能。

MyBatis缓存详解

cache缓存

 缓存是一般的ORM 框架都会提供的功能,目的就是提升查询的效率和减少数据库的压力。跟Hibernate 一样,MyBatis 也有一级缓存和二级缓存,并且预留了集成第三方缓存的接口。

缓存体系结构

MyBatis跟缓存相关的类都在cache包里面,其中有一个Cache接口,只有一个默认的实现类PerpetualCache,它是用HashMap实现的。

除此之外还有很多的装饰器,通过这些装饰器可以额外实现很多功能:回收策略、日志记录、定时刷新等

装饰器模式:是指在不改变原有对象的基础之上,将功能附加到对象上,提供了比继承更有弹性的替代方案(扩展原有对象功能)。

但是无论怎么装饰,经过多少层装饰,最后使用的还是基本的实现类(默认PerpetualCache)。

所有缓存实现类总体上可分为三类:基本缓存、淘汰算法缓存、装饰器缓存。

缓存实现类

描述

作用

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值