0. 开篇词 —— 风物长宜放眼量

news2024/10/6 19:26:31

个人简介

我是一名工作了6年的 Java 工程师,日常主要工作就是业务功能开发,但是业余时间喜欢研究一些开源框架和流行的技术。我本人是经典 ORM 框架 MyBatis 的 Contributor,同时也是微服务框架 Nacos 的核心 Contributor 和 gorm 的Contributor。

写作初衷

在我研读 MyBatis 源码的过程中,被其简洁清晰的功能结构、优雅的代码实现以及诸多经典设计模式的灵活运用所深深折服,我自己也从中受益颇多。 因此,我决定开启《MyBatis 设计思想》这个专栏,力求通过简洁而又不失系统化的方式,对 MyBatis 框架进行深度地梳理与剖析,尝试解构出它背后那些经典的设计思想,提炼出其中的精髓,并加以在日常工作中借鉴。专栏的写作初衷本是一个自我学习的方式,但是如果阅读的人能从中收获哪怕一点提升,那也是功德无量的事。

主要内容

本专栏力求聚焦重点,并不会大而全地介绍 MyBatis 的全部实现细节,而是选择其中个人认为最见编程功力的部分加以重点分析。这些内容通常是 MyBatis 的设计精髓,也是值得反复学习并尝试在实际工作中应用的最佳实践。
本专栏主要包括以下四个模块的内容:

  1. 开篇

开篇会站在全局视角,介绍下 MyBatis 的主要功能和使用方式,并对其源码结构和逻辑架构做一个概览,为后面的学习打好基础。

  1. 基础支撑篇

MyBatis 之所以能成为一款流行的 ORM 框架,很大程度上得益于其底层众多功能模块的支持,如日志、缓存、数据源、类型转换等等。这些模块实现简洁且优雅,很多甚至可以直接拿出来用在其它项目上。本篇会对这些功能模块一一进行详细地解析。

  1. 核心功能篇

本篇首先会整体梳理下 MyBatis 中 SQL 解析 -> 参数绑定 -> 结果集映射 -> Executor 执行器 这一典型执行流程,接下来对其中每一个步骤进行详细地展开,最终串联起 MyBatis 的核心功能实现。

  1. 整合与扩展篇

在最后这篇里会讨论 MyBatis 与常用第三方框架如 Spring 的整合原理,接下来演示下 MyBatis-Plus 这一利器的使用方式,最后对一些扩展功能如动态数据源、分库分表等做一些发散性思考。

这里我附上一张主要内容的思维导图,方便随时回来查阅:
在这里插入图片描述

写在最后

本专栏开篇于2023年年中,正值后疫情时代经济复苏不及预期、行业增速继续放缓、裁员失业率居高不下的宏观环境下,不确定性与焦虑感在整个社会中蔓延。但是我想说的是,越是在不确定的时代,越是要转而追求自身的确定性,摒弃对于时代红利 β 的依赖,专注于提升个人的 α。经济的兴衰、行业的变革背后都有其周期性的规律,拉长时间维度来看,我们当前所经历的一切也许并没有那么特殊。让我们一起把心态放平、视野放宽,在周期下行时持续蓄能,等待上行的机会再一飞冲天!最后附上我很喜欢的一句话共勉:风物长宜放眼量。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/706147.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

GPT3学习笔记

GPT-3概述 关于GPT-3的主要事实: 模型分类:GPT-3有8个不同的模型,参数从1.25亿到1750亿不等。 模型大小:最大的GPT-3模型有1750亿参数。这比最大的BERT模型大470倍(3.75亿个参数) 体系结构:GPT-3是一种自回归模型,使用仅有解码器的体系结构。使用下一…

mac ppt设置起始页码

今天发现我的ppt的左边ppt的缩略图的开始页码是从2开始的,觉得很奇怪,这个解决的办法就是 点击ppt->文件->页面设置->页眉和页脚->幻灯片编号

chatgpt赋能python:用Python自动化办公:优化SEO的关键

用Python自动化办公:优化SEO的关键 随着互联网的快速发展和人们对搜索引擎的依赖加深,SEO(搜索引擎优化)这个概念也逐渐受到人们的关注。SEO可以帮助网站排名更高,吸引更多的访客并提高转化率,成为了许多企…

直接在Notepad++中运行GO语言-(通过NppExec插件)

前提条件: 1.建议阅读文章【直接在Notepad中运行GO语言】: 直接在Notepad中运行GO语言_go语言 notepad_西晋的no1的博客-CSDN博客 2.建议阅读文章【notepad 中安装NppExec插件】: notepad 中安装NppExec插件_西晋的no1的博客-CSDN博客 以下…

九、DockerFile解析

学习参考:尚硅谷Docker实战教程、Docker官网、其他优秀博客(参考过的在文章最后列出) 目录 前言一、DockerFile介绍二、DockerFile构建过程解析2.1 Dockerfile内容基础知识2.2 Docker执行Dockerfile的大致流程2.3 Dockerfile、Docker镜像与Docker容器关系 三、Docke…

基于51单片机的数码管密码锁

基于51单片机的数码管密码锁是一种可以设置密码并通过输入密码来解锁的安全装置。该密码锁使用51单片机作为控制主板,配合数码管显示模块、按键模块和电磁锁等元件实现密码锁的功能。 实现步骤如下: 1. 硬件连接:将51单片机与数码管、按键模…

flutter mac环境配置

在 macOS 上安装和配置 Flutter 开发环境 - Flutter 中文文档 - Flutter 中文开发者网站 - Flutter一、配置flutter环境变量在 macOS 上安装和配置 Flutter 开发环境 - Flutter 中文文档 - Flutter 中文开发者网站 - Flutter 解压文件放在我的文档里面 然后设置环境变量 1. 执…

OR青年导师访谈特辑 | 北京邮电大学助理教授 姜蔚蔚:如果不亲自尝试,就永远不知道自己的边界在哪

OR青年计划 由【运筹OR帷幄】社区主办的【OR青年计划】,旨在帮助对运筹学应用有理想和追求的同学,近距离与学界、业界导师交流课题,深入了解运筹学的细分方向,为后续的深造、就业生涯打下坚实的基础!更多内容请查看链…

chatgpt赋能python:免费的Python教程:从入门到精通

免费的Python教程:从入门到精通 Python是如今最热门的编程语言之一,在众多编程语言中占据了重要的地位。Python有着简单易学的语法,充足的库支持,高效的执行速度和海量的社区支持,这些使得Python成为最适合初学者的编…

不知道识别表格的方式有哪些?分享识别表格怎么弄

小明:嘿,小红!你知道吗?最近我在整理一堆纸质表格,但是手动输入数据实在太耗时间了,我在想有没有什么方法可以快速识别表格的内容呢? 小红:哦,我听说过有一些方式可以自…

java面试Day13

1. 有哪些注解可以注入 Bean?Autowired 和 Resource 的区别? 在 Spring 框架中,常用的注入 Bean 的注解包括: Autowired:自动注入,按照类型自动装配,如果有多个同类型的 Bean,则需要…

前端开发中的样式

目录 基础知识回顾 样式表⭐⭐ 内联样式表 嵌入样式表 外部样式表 选择器 ID选择器(#id)、类选择器(.class)、标签选择器⭐⭐ 伪类/伪元素选择器 伪类选择器(a:hover ul li:nth-child(odd))逻辑选择元素 伪元素(div::after)抽象创造元素 特…

C语言实现二叉搜索树BST

文章目录 初始化搜索节点删除节点 二叉搜索树(Binary Search Tree, BST)要求父节点大于等于其左子节点,而小于等于其右子节点,这样递归类推,相当于父节点大于等于其左侧的所有节点而小于等于右侧的所有节点,如下图所示 根据BST的规…

闭包治愈“全局变量恐惧症”,利用闭包实现JavaScript私有变量

文章目录 I. 介绍对闭包的定义和概述为什么理解闭包很重要 II. 函数与作用域函数的作用域和生命周期闭包是如何利用函数的作用域的 III. 闭包的实现闭包的实现方式如何创建闭包闭包的应用场景 IV. 闭包的优缺点闭包的优点数据的封装可以实现高阶函数 闭包的缺点内存占用对程序员…

MedLSAM:定位和分割任何3D医学图像模型

文章目录 MedLSAM: Localize and Segment Anything Model for 3D Medical Images摘要本文方法模型学习过程模型推理过程 实验结果 MedLSAM: Localize and Segment Anything Model for 3D Medical Images 摘要 SAM (Segment Anything Model)是近年来出现的一种具有开创性的图像…

【Linux】gcc/g++ 调试学习记录

这是目录 gcc编译选项二、实战1、编译加上 CFLAGS -ggdb三级目录 gcc编译选项 1、-g 编译debug debugging 选项:-g gcc -g手册: 点击这里 -g一共分为4个等级:-g、-g0、-g1、-g3 其中g和g0是一个性质,不打开调试信息,g3保留所有信…

react-native-camera插件的使用,以及实现人脸识别

一、git地址和环境版本 (1)Git地址:https://github.com/react-native-camera/react-native-camera/tree/master (2)node版本:14 (3)react-native版本:0.72 二、环境配…

Linux操作系统——第五章 进程信号

目录 信号概念 用kill -l命令可以察看系统定义的信号列表 信号处理常见方式概览 产生信号 1. 通过终端按键产生信号 2. 调用系统函数向进程发信号 3. 由软件条件产生信号 4. 硬件异常产生信号 阻塞信号 1. 信号其他相关常见概念 2. 在内核中的表示 3. sigset_t 4.…

spring.aop 随笔4 如何借助jdk代理类实现aop

0. 下了有一个月的雨,这对鼻炎来说来吗?不好 其实这也算6月份的博客,之前一直疏于整理 本文仅关注jdk代理所实现的spring.aop下,两者的关系完整的aop源码走读请移步相关 spring.aop 的其他随笔 1. 反编译追踪源码 1.1 jdk代理类…

BPMN2.0规范简介

1 概述 BPMN(Business Process Model & Notation),中文名为业务流程模型与符号。BPMN2.0是OMG(Object Management Group,对象管理组织)制定的,其主要目的是既给用户提供一套简单的、容易理解的机制,以便用户创建流程模型&…