一.前言: MyBatis 是一款优秀的持久层框架,它支持定制化 SQL.存储过程以及高级映射.MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集.MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录 通过Mybatis框架,可以将一个URL指向某段SQL代码,在Java代码里只需指定这个URL即可,然后如果代码进行了修改涉及到SQ…
前言 对于任何框架而言,在使用前都要进行一系列的初始化,MyBatis也不例外.本章将通过以下几点详细介绍MyBatis的初始化过程. MyBatis的初始化做了什么 MyBatis基于XML配置文件创建Configuration对象的过程 手动加载XML配置文件创建Configuration对象完成初始化,创建并使用SqlSessionFactory对象 涉及到的设计模式 一. MyBatis的初始化做了什么 任何框架的初始化,无非是加载自己运行时所需要的配置信息.MyBatis的配置信息,大…
[原文]https://www.toutiao.com/i6594029178964673027/ 源码分析MyBatis缓存原理 1.简介 在 Web 应用中,缓存是必不可少的组件.通常我们都会用 Redis 或 memcached 等缓存中间件,拦截大量奔向数据库的请求,减轻数据库压力.作为一个重要的组件,MyBatis 自然也在内部提供了相应的支持.通过在框架层面增加缓存功能,可减轻数据库的压力,同时又可以提升查询速度,可谓一举两得.MyBatis 缓存结构由一级缓存和二级缓存构成,这两级…
前言:工作中虽然用到了 MyBatis,可完全不知道为什么,再不学习就晚了,这里将记录我的学习笔记,整个 MyBatis 的体系. 一.简介 1.传统的JDBC JDBC 是一种典型的桥接模式. 使用传统的 JDBC 方式来访问数据库,有一些弊端,工作量相对较大,对处理异常.事务并正确关闭资源十分复杂. JDBC 大致有这几步: 连接数据库(注册驱动和数据库信息): 操作 Connection,打开Statement对象: 通过 Statement 执行 SQL,返回结果到ResultSet对象…
Mybatis插件原理 在实际开发过程中,我们经常使用的Mybaits插件就是分页插件了,通过分页插件我们可以在不用写count语句和limit的情况下就可以获取分页后的数据,给我们开发带来很大 的便利.除了分页,插件使用场景主要还有更新数据库的通用字段,分库分表,加解密等的处理. 这篇博客主要讲Mybatis插件原理,下一篇博客会设计一个Mybatis插件实现的功能就是每当新增数据的时候不用数据库自增ID而是通过该插件生成雪花ID,作为每条数据的主键. 一.JDK动态代理+责任链设计模式 My…
MyBatis是可以说是目前最主流的Spring持久层框架了,本文主要探讨SpringBoot集成MyBatis的底层原理.完整代码可移步Github. 如何使用MyBatis 一般情况下,我们在SpringBoot项目中应该如何集成MyBatis呢? 引入MyBatis依赖 <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-star…
一.MyBatis 完整示例 这里,我将以一个入门级的示例来演示 MyBatis 是如何工作的. 注:本文后面章节中的原理.源码部分也将基于这个示例来进行讲解.完整示例源码地址 1.1. 数据库准备 在本示例中,需要针对一张用户表进行 CRUD 操作.其数据模型如下: CREATE TABLE IF NOT EXISTS user ( id BIGINT(10) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'Id', name VARCHAR(10) NOT…
Mybatis 缓存原理 本文来自拉钩 java 高薪训练营,如果文章写的不好,看不懂可以找我要课程视频,不收费. 只愿在编程道路上,寻求志同道合的码友.v:15774135883 1 Mybatis 缓存机制 Mybatis 提供了一级.二级缓存. 一级缓存:线程级别的缓存,也称为本地缓存或sqlSession级别的缓存,一级缓存是默认存在的,同一个会话中,查询两次相同的操作就会从缓存中取. 二级缓存:全局范围的缓存:除了当前sqlSession能用外,其他的也可以使用.二级缓存默认也是开启的…
Mybatis工作原理: 我们的应用程序通过mybatis提供的api,增删改查方法来访问数据库,api底层调用了jdbc ,只不过mybatis对jdbc的封装是不完全封装,里面的sql语句需要我们自己来写,sql语句写在映射文件mapper.xml中的,而映射文件是注册在主配置文件mybatis.xml中的,主配置文件是通过api加载进来的 ,// 1.加载主配置文件 InputStream inputStream = Resources.getResourceAsStream("mybat…
在上一篇中Mybatis插件原理分析(一)中我们主要介绍了一下Mybatis插件相关的几个类的源码,并对源码进行了一些解释,接下来我们通过一个简单的插件实现来对Mybatis插件的运行流程进行分析. 一.简单的插件MyInterceptor,源码如下: /** * 实现Interceptor的类必须使用注解@Intercepts,Plugin类中的getSignatureMap函数就是来解析这个注解 * 获得注解中的相关信息,比如拦截的method,拦截的接口实现类,以及method的函数参数等…