
深入浅出Mybatis专栏
文章平均质量分 85
系统详细的介绍了mybatis的使用及原理,非常使用初学者及想要深入了解mybatis的同学
优惠券已抵扣
余额抵扣
还需支付
¥29.90
¥99.00
购买须知?
本专栏为图文内容,最终完结不会低于15篇文章。
订阅专栏,享有专栏所有文章阅读权限。
本专栏为虚拟商品,基于网络商品和虚拟商品的性质和特征,专栏一经购买无正当理由不予退款,不支持升级,敬请谅解。
波波烤鸭
10余年架构和线上讲师工作经验。精通Java,微服务和云原生相关,致力于Java技术的免费分享。
展开
-
透彻掌握Spring整合MyBatis的原理彻底征服面试官,建议收藏
在MyBatis篇内容的最后我们来给大家详细介绍下Spring是如何整合MyBatis的。让大家彻底掌握MyBatis的底层设计原理及实现。MyBatis整合Spring原理 把MyBatis集成到Spring里面,是为了进一步简化MyBatis的使用,所以只是对MyBatis做了一些封装,并没有替换MyBatis的核心对象。也就是说:MyBatis jar包中的SqlSessionFactory、SqlSession、MapperProxy这些类都会用到。mybatis-spring.jar里原创 2021-05-31 14:10:25 · 3573 阅读 · 15 评论 -
源码中的设计并没有你想象的那么复杂,不信你来看看MyBatis的DataSource的实现
本文我们来给大家介绍了MyBatis中的DataSource的设计实现。其实蛮容易的哦。DataSource 首先大家要清楚DataSource属于MyBatis三层架构设计的基础层 然后我们来看看具体的实现。 在数据持久层中,数据源是一个非常重要的组件,其性能直接关系到整个数据持久层的性能,在实际开发中我们常用的数据源有 Apache Common DBCP,C3P0,Druid 等,MyBatis不仅可以集成第三方数据源,还提供的有自己实现的数据源。 在MyBatis中提供了两原创 2021-05-29 16:21:27 · 2209 阅读 · 11 评论 -
其实MyBatis的插件机制可以帮我们解决工作的很多问题,建议收藏!
在实际的工作对于MyBatis的使用我们更多的还是停留在应用层,如果你对于MyBatis的底层,尤其是插件这块掌握的比较好的,可以帮助我们解决很多工作中比较棘手的问题,本篇文章就给大伙详细的来介绍下MyBatis的插件机制。对于MyBatis的底层原理还有不清楚的可以看看我的MyBatis底层专题哦。MyBatis源码分析之三层结构介绍MyBatis源码分析之核心流程介绍(下)MyBatis源码分析之核心流程介绍(上)带你彻底搞懂MyBatis的底层实现之反射工具箱(reflector)带你彻原创 2021-05-28 15:52:04 · 4381 阅读 · 13 评论 -
带你彻底搞懂MyBatis的底层实现之缓存模块(Cache)-吊打面试官必备技能
基础支持层位于MyBatis整体架构的最底层,支撑着MyBatis的核心处理层,是整个框架的基石。基础支持层中封装了多个较为通用的、独立的模块。不仅仅为MyBatis提供基础支撑,也可以在合适的场景中直接复用。 上篇文章我们给大家聊了下binding模块,本篇文章我们重点来聊下缓存(Cache)模块。缓存模块 MyBatis作为一个强大的持久层框架,缓存是其必不可少的功能之一,Mybatis中的缓存分为一级缓存和二级缓存。但本质上是一样的,都是使用Cache接口实现的。缓存位于 org.ap原创 2021-05-28 10:45:36 · 1456 阅读 · 0 评论 -
带你彻底搞懂MyBatis的底层实现之binding模块
基础支持层位于MyBatis整体架构的最底层,支撑着MyBatis的核心处理层,是整个框架的基石。基础支持层中封装了多个较为通用的、独立的模块。不仅仅为MyBatis提供基础支撑,也可以在合适的场景中直接复用。 上篇文章我们给大家聊了下日志模块,本篇文章我们重点来聊下binding模块。binding模块 接下来我们看看在org.apache.ibatis.binding包下给我们提供的Binding模块,这个模块在我们前面使用的// 3.根据SqlSessionFactory对象获取S原创 2021-05-27 11:11:16 · 860 阅读 · 1 评论 -
带你彻底搞懂MyBatis的底层实现之日志模块(Log)
基础支持层位于MyBatis整体架构的最底层,支撑着MyBatis的核心处理层,是整个框架的基石。基础支持层中封装了多个较为通用的、独立的模块。不仅仅为MyBatis提供基础支撑,也可以在合适的场景中直接复用。 上篇文章我们给大家聊了下类型转换模块,本篇文章我们重点来聊下日志模块。日志模块 首先日志在我们开发过程中占据了一个非常重要的地位,是开发和运维管理之间的桥梁,在Java中的日志框架也非常多,Log4j,Log4j2,Apache Commons Log,java.util.loggi原创 2021-05-26 21:29:18 · 2242 阅读 · 2 评论 -
带你彻底搞懂MyBatis的底层实现之类型转换模块
基础支持层位于MyBatis整体架构的最底层,支撑着MyBatis的核心处理层,是整个框架的基石。基础支持层中封装了多个较为通用的、独立的模块。不仅仅为MyBatis提供基础支撑,也可以在合适的场景中直接复用。 上篇文章我们给大家聊了下反射工具箱模块,本篇文章我们重点来聊下类型转换模块。类型转换模块 先准备这么一段代码String sql = "SELECT id,user_name,real_name,password,age,d_id from t_user where id = ?原创 2021-05-26 13:47:53 · 892 阅读 · 2 评论 -
带你彻底搞懂MyBatis的底层实现之反射工具箱(reflector)
基础支持层位于MyBatis整体架构的最底层,支撑着MyBatis的核心处理层,是整个框架的基石。基础支持层中封装了多个较为通用的、独立的模块。不仅仅为MyBatis提供基础支撑,也可以在合适的场景中直接复用。反射模块详解 MyBatis在进行参数处理、结果集映射等操作时会使用到大量的反射操作,Java中的反射功能虽然强大,但是代码编写起来比较复杂且容易出错,为了简化反射操作的相关代码,MyBatis提供了专门的反射模块,该模块位于org.apache.ibatis.reflection包下,它原创 2021-05-24 21:37:43 · 1962 阅读 · 11 评论 -
MyBatis源码分析之核心流程介绍(下)
接上一篇我们继续来介绍1.SqlSession 程序每一次操作数据库,都需要创建一个会话,我们用openSession()方法来创建。接下来我们看看SqlSession创建过程中做了哪些操作SqlSession sqlSession = factory.openSession(); 通过前面创建的DefaultSqlSessionFactory的openSession方法来创建 @Override public SqlSession openSession() {原创 2021-05-20 19:47:06 · 910 阅读 · 2 评论 -
MyBatis源码分析之核心流程介绍(上)
本文我们来看看MyBatis的核心流程核心流程分析 首先来看看MyBatis的主要工作流程图 分析源码我们还是从编程式的Demo入手 /** * MyBatis getMapper 方法的使用 */ @Test public void test2() throws Exception{ // 1.获取配置文件 InputStream in = Resources.getResourceAsStream("mybat原创 2021-05-20 19:40:29 · 1093 阅读 · 0 评论 -
MyBatis源码分析之三层结构介绍
后面几篇文章我们详细的来聊聊MyBatis的源码,首先我们来介绍下MyBatis的体系结构。三层结构介绍 在MyBatis的主要工作流程里面,不同的功能是由很多不同的类协作完成的,它们分布在MyBatis jar包的不同的package里面。 大概有一千多个类,这样看起来不够清楚,不知道什么类在什么环节工作,属于什么层次。MyBatis按照功能职责的不同,所有的package可以分成不同的工作层次。上面的那个图已经给大家展现了1.1 接口层 首先接口层是我们打交道最多的。核心对象是S原创 2021-05-20 19:32:20 · 1168 阅读 · 0 评论 -
记录如何将MyBatis源码提交到gitee上管理
最近有把MyBatis的源码down下来做了注释处理,为了方便小伙伴拿到源码,在这记录下操作的流程1.gitee中创建仓库 这个比较简单请自行申请账号,然后先创建parent项目即可2.idea中操作 在VCS中操作如下,然后指向到我的源码路径选择remotes,将你要提交的仓库地址填入然后执行git的基本操作然后重复相同的步骤将MyBatis的源码也提交上去。这样我们带有中文注释的源码就ok了最后附上源码地址:https://gitee.com/dengpbs/m原创 2021-05-14 10:04:28 · 753 阅读 · 0 评论 -
IntelliJ IDEA(2019)之mybatis反向生成
mybatis的逆向工程是非常便捷的操作,能够显著的提高我们的开发效率,之前介绍过Eclipse的操作,本文来介绍下在idea中怎么处理。mybatis逆向工程1.配置文件 在resources目录下创建配置文件,具体如下:<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE generatorConfiguration...原创 2019-05-03 19:46:56 · 3227 阅读 · 0 评论 -
Mybatis源码之Statement
上篇文章介绍了StatementType,StatementType决定了mybatis中具体是由哪个Statement来执行Sql语句的。本文我们就具体来看看源码中是怎么处理的。Statement源码分析 我们还是从入口方法开始:int update = session.update("com.sxt.pojo.User.update", user); @Override ...原创 2019-04-28 17:44:57 · 2324 阅读 · 0 评论 -
Mybatis源码之StatementType
在mybatis中StatementType的值决定了由什么对象来执行我们的SQL语句。本文来分析下在mybatis中具体是怎么处理的。StatementType1.StatementType枚举 StatementType是一个枚举类型。如下:/** * @author Clinton Begin */public enum StatementType { STATEME...原创 2019-04-28 17:13:15 · 2084 阅读 · 0 评论 -
Mybatis源码分析之-Executor
mybatis的源代码相对于spring的来说简单了很多,对于初学者,可以先了解了mybatis的源码后再去了解spring的源码,本文主要来分析下Executor的内容Executor介绍 Executor是mybatis的一个核心接口,所有的Mapper语句的执行都是通过Executor进行的。类结构图如下1.Executor(顶层接口) 父接口,在此接口中定义了各种处理方...原创 2019-04-27 22:51:53 · 2074 阅读 · 1 评论 -
MyBatis之分页插件(PageHelper)工作原理
数据分页功能是我们软件系统中必备的功能,在持久层使用mybatis的情况下,pageHelper来实现后台分页则是我们常用的一个选择,所以本文专门类介绍下。PageHelper原理相关依赖<dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifac...原创 2019-03-22 16:28:20 · 125747 阅读 · 7 评论 -
mybatis教程6(逆向工程)
什么是逆向工程简单点说,就是通过数据库中的单表,自动生成java代码。Mybatis官方提供了逆向工程,可以针对单表自动生成mybatis代码(mapper.java\mapper.xml\po类)企业中,逆向工程是个很常用的工具,比我们手动创建映射文件的配置信息方便很多.方向生成eclipse中安装Generate插件创建项目项目类型没有限制,可以是java项目也可以是we...原创 2019-01-22 19:05:06 · 2723 阅读 · 0 评论 -
mybatis和spring整合
本文给大家介绍下Spring整合Mybatis的步骤SpringMVC整合Spring教程创建maven项目创建一个java项目即可引入相关依赖&amp;amp;lt;project xmlns=&amp;quot;http://maven.apache.org/POM/4.0.0&amp;quot; xmlns:xsi=&amp;quot;http://www.w3.org/2001/XMLSchema-instanc原创 2019-01-22 17:34:48 · 2912 阅读 · 0 评论 -
mybatis教程5(延迟加载和缓存)
关联关系在关系型数据库中,表与表之间很少是独立与其他表没关系的。所以在实际开发过程中我们会碰到很多复杂的关联关系。在此我们来分析下载mybatis中怎么处理这些关系1对1关系我们有一张员工表(T_EMP),一张部门表(T_DEPT)。员工表中的一条记录对应于部门表中有且仅有一条记录。这就是一对一的关联关系。查询每个员工的信息及对应的部门信息对象与对象1对1部门对象: // 部...原创 2019-01-22 16:24:48 · 2570 阅读 · 1 评论 -
mybatis教程4(动态SQL)
动态SQL语句MyBatis 的强大特性之一便是它的动态 SQL。如果你有使用 JDBC 或其它类似框架的经验,你就能体会到根据不同条件拼接 SQL 语句的痛苦。例如拼接时要确保不能忘记添加必要的空格,还要注意去掉列表最后一个列名的逗号。利用动态 SQL 这一特性可以彻底摆脱这种痛苦。虽然在以前使用动态 SQL 并非一件易事,但正是 MyBatis 提供了可以被用在任意 SQL 映射语句中的...原创 2019-01-22 14:23:36 · 3717 阅读 · 0 评论 -
mybatis教程3(映射文件)
MyBatis 的真正强大在于它的映射语句,也是它的魔力所在。由于它的异常强大,映射器的 XML 文件就显得相对简单。如果拿它跟具有相同功能的 JDBC 代码进行对比,你会立即发现省掉了将近 95% 的代码。MyBatis 就是针对 SQL 构建的,并且比普通的方法做的更好。log4j在程序的运行的过程中为了便于查询sql的输出,需要引入log4j添加依赖&amp;amp;amp;amp;lt;dependency&amp;amp;amp;amp;...原创 2019-01-20 23:37:37 · 3468 阅读 · 2 评论 -
mybatis教程2(配置文件)
MyBatis 的配置文件包含了会深深影响 MyBatis 行为的设置(settings)和属性(properties)信息。文档的顶层结构如下:configuration 配置 properties 属性 settings 设置 typeAliases 类型别名 typeHandlers 类型处理器 objectFactory 对象工厂 plug...原创 2019-01-20 21:30:17 · 14172 阅读 · 0 评论 -
mybatis教程之原理剖析
MyBatis是目前非常流行的ORM框架,功能很强大,然而其实现却比较简单、优雅。本文通过代理的方式来看下其实现方式一:传统API方式@Testpublic void add() throws IOException { // 1.通过Resources对象加载配置文件 InputStream inputStream = Resources.getResourceAsStream(&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;quo原创 2019-01-20 17:44:05 · 4270 阅读 · 3 评论 -
mybatis教程1(基本使用)
官方网站一、什么是 MyBatis ?MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。...原创 2019-01-19 23:10:34 · 7669 阅读 · 0 评论