Mybatis源码学习之日志(五)】的更多相关文章

简述 在Java开发中常用的日志框架有Log4j.Log4j2.Apache Commons Log.java.util.logging.slf4j等,这些工具对外的接口并不相同.为了统一这些工具的接口,MyBatis定义了一套统一的日志接口供上层使用,并为上述常用的日志框架提供了相应的适配器. 适配器模式 首先,我们简单介绍设计模式中有六大原则. 单一职责原则: 不要存在多于一个导致类变更的原因,简单来说,一个类只负责唯一项职责. 里氏替换原则: 如果对每一个类型为T1的对象t1,都有类型为T…
目录 零.一级缓存和二级缓存的流程 一级缓存总结 二级缓存总结 一.缓存接口Cache及其实现类 二.cache标签解析源码 三.CacheKey缓存项的key 四.二级缓存TransactionCache 五.二级缓存测试 六.一级缓存源码解析 七.测试一级缓存 前文传送门:mybatis源码学习:从SqlSessionFactory到代理对象的生成 零.一级缓存和二级缓存的流程 以这里的查询语句为例. 一级缓存总结 以下两种情况会直接在一级缓存中查找数据 主配置文件或映射文件没有配置二级缓存…
前文传送门: mybatis源码学习:从SqlSessionFactory到代理对象的生成 mybatis源码学习:一级缓存和二级缓存分析 下面这条语句,将会调用代理对象的方法,并执行查询过程,我们一起来看看它的内部是如何实现的. User user1 = userDao1.findById(41); 一.动态代理:执行代理对象的方法时拦截,进行方法增强. /** * 作用:执行被代理对象的任何接口方法都会经过该方法 * @param proxy : 代理对象的引用 * @param metho…
目录 一.自定义插件流程 二.测试插件 三.源码分析 1.inteceptor在Configuration中的注册 2.基于责任链的设计模式 3.基于动态代理的plugin 4.拦截方法的intercept(invocation) 四.插件开发插件pagehelper 1.引入相关依赖 2.全局配置 3.测试分页 五.插件总结 前文传送门: mybatis源码学习:从SqlSessionFactory到代理对象的生成 mybatis源码学习:一级缓存和二级缓存分析 mybatis源码学习:基于动…
今Executor这个类,Mybatis虽然表面是SqlSession做的增删改查,其实底层统一调用的是Executor这个接口 在这里贴一下Mybatis查询体系结构图 Executor组件分析 Executor是Mybatis的核心组件之一,定义了数据库操作最基本的方法,SqlSession的功能都是基于它实现的; 在分析这个之前先来说一下 大家不用想也知道 设计模式白,之前都是这么开始讲的,没错在这里我说一下模板模式 模板模式:一个抽象类公开定义了执行他方法的方式/模板,他的子类可以按需要…
最近这一周,主要在学习mybatis相关的源码,所以记录一下吧,算是一点学习心得 个人觉得,mybatis的源码,大致可以分为两部分,一是原生的mybatis,二是和spring整合之后的mybatis源码学习(也就是mybatis-spring这个jar包的相关源码),这边笔记,主要来学习原生mybatis: 还是先用描述一下,原生mybatis从解析xml到执行SQL的一个流程: 1.第一步:首先会通过sqlSessionFactoryBuilder来build一个SQLSessionFac…
源码学习到这里就要结束了; 来总结一下吧 Mybatis的总体架构 这次源码学习我们,学习了重点的模块,在这里我想说一句,源码的学习不是要所有的都学,一行一行的去学,这是错误的,我们只需要学习核心,专注重点,参考借鉴,这才是我们的目标; 第一天:日志模块学习 第二天:数据源模块学习 第三天:缓存模块学习 第四天:反射模块学习 第五天:核心流程学习 初始化 -> binding模块 -> SqlSession 第六天:核心流程学习  Executor 第七天:插件模块学习  插件开发原理 -&g…
简述 关于ORM的定义,我们引用了一下百度百科给出的定义,总体来说ORM就是提供给开发人员API,方便操作关系型数据库的,封装了对数据库操作的过程,同时提供对象与数据之间的映射功能,解放了开发人员对访问数据库交互的维护,大大提高工作效率. 我们以传统JDBC编程中的查询操作为例进行说明,其主要步骤如下: (1)注册数据库驱动类,明确指定数据库URL地址.数据库用户名.密码等连接信息. (2)通过DriverManager打开数据库连接. (3)通过数据库连接创建Statement对象. (4)通…
一 .概述 MyBatis没有提供日志的实现类,需要接入第三方的日志组件,但第三方日志组件都有各自的Log级别,且各不相同,但MyBatis统一提供了trace.debug.warn.error四个级别: 自动扫描日志实现,并且第三方日志插件加载优先级如下:slf4J → commonsLoging → Log4J2 → Log4J → JdkLog; 日志的使用要优雅的嵌入到主体功能中: 二.设计模式 将各种日志组件如(slf4J ,commonsLoging ,Log4J2 , Log4J…
本文主要是个人学习mybatis缓存的学习笔记,主要有以下几个知识点 1.一级缓存配置信息 2.一级缓存源码学习笔记 3.二级缓存配置信息 4.二级缓存源码 5.一级缓存.二级缓存总结 1.一级缓存配置: 一级缓存是SqlSession级别的,同一个sqlSession执行多次相同的查询语句时,第二次会从缓存中获取数据,不查询数据库:一级缓存是无法关闭的,默认是SESSION级别 mybatis一级缓存默认是开启的,一级缓存有两个配置值,SESSION级别和STATEMENT级别,这两个级别的区…