8

作者: 01010100 | 来源:发表于2018-03-26 14:58 被阅读10次

Mybatis:

1、总体描述,架构图JDBC(Java DataBase Connectivity, java数据库连接)是一种用于执行SQL语句的Java API, 可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。Mybatis 是对JDBC的封装的持久层框架。所以要记住MyBatis的宗旨:是基于JDBC封装的框架,底层真正与数据库的操作肯定还是通过JDBC来进行的。

架构:

1)接口层:核心就是SqlSession接口,定义了mybatis暴露给应用程序调用的api。

2)核心处理层配置解析 在初始化过程中,会加载mybaits-config.xml配置文件、映射配置文件及Mapper接口中的注解信息, 解析后的配置信息会形成相对应的对象并保存到Configuration对象中。SQL解析:解析映射文件中定义的动态SQL节点,并形成数据库可执行的SQL语句。SQL执行:涉及到很多组件,比较重要的是Executor、StatementHandler、ParameterHandler和ResultSetHandler。Executor主要负责维护一级缓存和二级缓存,并提供事物管理的相关操作,它会将数据库相关操作委托给StatementHandler完成。StatementHandler首先通过ParameterHandler完成SQL语句的参数绑定,然后通过java.sql.Statement对象执行SQL语句并得到结果集,最后通过ResultSetHandler完成结果集的映射。

3)基础支持层:基础支持层包含mybatis的基础模块,这些模块为核心处理层提供支持。如反射模块等

2、一级缓存二级缓存

一次查询,根据传入sqlstatementId和查询条件构造一个key,先从缓存中查找是否已缓存。如果启用了二级缓存的话,MyBatis 首先会先从二级缓存中检索查询结果,如果缓存不命中则会继续检索一级缓存。只有在这两层缓存都不命中的情况下才会查询数据库,最后会以数据库返回的结果更新一级缓存和二级缓存。

一级缓存是基于 sqlSession 的,而 二级缓存是基于 mapper文件的namespace二级缓存的默认实现也是PerpetualCache,默认的缓存策略是LRU。二级缓存是需要单独配置的,通过开启。

只要执行update操作(update、insert、delete),都会将这个SqlSession对象中对应的一级缓存清空掉,这些操作默认会刷新缓存flushCache="true"。

相关文章

  • 8-8-8

    发-发-发 今天比较闲,备忘录看了一遍又一遍,发现没有什么具体的工作非得马上完成。 又不想看微博浪费时间,想来想去...

  • 8、8

    山重水复疑无路,柳暗花明又一村。人生有万千种可能,但是真的有一种成功,叫坚持到底!

  • 8/8

    今天有人问我,你的脾气一直都是这么好的吗?还是说你也看人的? 我笑笑说,你觉得呢? 虽然表面上,我波澜不惊,可我的...

  • 35年静脉曲张老烂腿案例

    【35年静脉曲张老烂腿案例】 1/8 2/8 3/8 4/8 5/8 6/8 7/8 8/8

  • 寒假计划安排表

    8:00 起床 8:00~8:10 洗漱 8:10~8:40 吃早饭 8:50~9:...

  • 作息时间表(家)

    上午 8:00起床 8:00~8:20洗漱,吃早饭 8:20~8:30看视频 8:30~8:50背单词 8:50~...

  • 2021-01-07

    脑洞大开智力PK 蓝白领(辑) 之一 5 1 5 5=24 8 8 8 8 8 8 8 8 =1000 在数字与数...

  • 24=8+8+8

    当表盘里的时针转了一圈以后,崭新的一天已经开始。实际上,每个人得生活方式是大相径庭的,8小时睡觉,8小时工作,每天...

  • 假期计划

    醒来 : 8:00 记单词: 8:00~8:30(半小时) 起床 : 8:30 洗漱 : 8:30~8:50 (二...

  • 2019-5-8晨间日记

    8:15-8:25 收拾厨房 8:25-8:30 铺床 8:30-8:35 收拾杂物 8:35-8:40 卫生间台...

网友评论

      本文标题:8

      本文链接:https://www.haomeiwen.com/subject/gicqqftx.html