【十一】MyBatis Plus 原理分析

MyBatis Plus 原理分析

摘要

        Java EE开发中必不可少ORM框架,目前行业里最流行的orm框架非Mybatis莫属了,而Mybatis框架本身没有提供api实现,所以市面上推出了Mybatis plus系列框架,plus版是mybatis增强工具,用于简化Mybatis的开发。本文主要是介绍mybatis plus这款增强工具,Mybatis-Plus则是全自动的ORM框架,按照开闭原则,在不影响Mybatis现有功能的情况下,实现了对Mybatis的功能增强,也是笔者使用和研究源码比较深的,同时也是市面上使用比较流行的,希望通过本文的介绍大家能够理解Mybatis plus的实现原理,同时加深大家对Mybatis的理解。

一、实现原理

        Mybatis plus是一个 Mybatis的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。

        如下图所示是Mybatis plus的框架结构图:

​图1、框架结构        

        由上图所示,Mybatis plus主要由starter、annotation、extension、core、generator这几个模块组成,限于篇幅和本文主旨不对源码做讲解,本文主要是分析清楚mybatis plus的实现原理。如下图所示是mybatis-plus和mybatis的关系:

图2、mybatis-plus和mybatis的关系

在 MyBatis 的基础上只做增强不做改变,那么做了哪些增强呢?我们使用最多的应该是CRUD 接口方面的功能了,这里将主要讲解CRUD 接口方面的实现原理。

        mybatis-plus提供了Service CRUD 接口和Mapper CRUD 接口,这里主要以 insert(T entity) 为例来进行说明,其他接口实现相通。

图3、insert接口实例

        这里我们需要关注一下几个类:

这三个类分别对应mybatis中的以下三个类:

MybatisMapperProxyFactory为代理实例创建工厂、MybatisMapperProxy实现用来来定义代理对象的行为,MybatisMapperMethod的功能是执行SQL的相关操作。

通过debug我们发现insert的方法最终进入到如下方法中:

继续跟进我们可以找到mybatis中对jdbc的封装

        到此Mybatis plus的原理讲完了,可以看到plus的底层是基于mybatis的,上层还是基于jdk的动态代理技术,只是在mybatis的基础上提供了丰富的CRUD 接口,另外在mybatis的基础上扩展了一些功能,如下图所示是plus的核心功能:

二、总结

        本文旨在讲解Mybatis Plus的实现原理,Mybatis-Plus相对于Mybatis来说,提供了更多的便捷功能,如自动分页、自动填充、通用Mapper等。这些功能可以大大减少开发者的工作量,提高开发效率。而Mybatis需要开发者自己编写这些功能,相对来说较为繁琐。

        写过一遍博客【五】从jdbc到mybatis看这一篇就够了_mybatis获取数据库连接-CSDN博客,jdb是orm框架的基础,Mybatis框架则是对jdbc规范的扩展,在熟悉了Mybatis之后我们感兴趣就可以来了解一下Mybatis生态相关的产品,而Mybatis Plus则是Mybatis框架的下游产品。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

量子飞跃:从根本上改变复杂问题的解决方式

内容来源:量子前哨(ID:Qforepost) 编辑丨王珩 编译/排版丨沛贤 深度好文:1000字丨5分钟阅读 利用多功能量子比特的量子计算机已处于解决复杂优化问题的最前沿,例如旅行商问题,这是一个典型的…

虚良SEOPython脚本寄生虫程序源码

本程序,快速收录百度首页,3-5天就可以有流量,长期稳定,可以设置自动推送。 点这里 Python脚本寄生虫程序源码(寄生虫电影脚本) - 虚良SEO 模板可以自己修改,源码带模板标签说明,简…

AI大模型日报#0415:贾佳亚团队新作王炸、马斯克首款多模态大模型、ChatGPT to B

导读: 欢迎阅读《AI大模型日报》,内容基于Python爬虫和LLM自动生成。目前采用“文心一言”生成了每条资讯的摘要。标题: 融合ChatGPTDALLE3,贾佳亚团队新作开源:识图推理生图一站解决 摘要: 贾佳亚团队推出了多模态模型Mini-Gem…

day58 回文子串 最长回文子序列

题目1:647 回文子串 题目链接:647 回文子串 题意 统计字符串s中回文子串的数目 回文子串是正着读和倒过来读一样的字符串 子串是连续字符组成的一个序列 动态规划 动规五部曲 1)dp数组及下标i的含义 dp[i][j] 表示 [s[i]&#xf…

转移插槽简介

4.3.4.转移插槽 我们要将num存储到7004节点,因此需要先看看num的插槽是多少: 如上图所示,num的插槽为2765. 我们可以将0~3000的插槽从7001转移到7004,命令格式如下: 具体命令如下: 建立连接:…

【读书笔记】自动驾驶与机器人中的SLAM技术——高翔

文章会对本书第五章节及以后章节进行总结概括。每日更新一部分。一起读书吧。 第五章——基础点云处理 重点:点云的相邻关系是许多算法的基础 5.1 激光雷达传感器与点云的数学模型 5.1.1激光雷达传感器的数学模型 雷达有两种:机械旋转式激光雷达&…

RocketMQ集群配置

我们集群部署采取采用2m-2s(同步双写)方式,每个Master配置一个Slave,有多对Master-Slave,HA采用同步双写方式,即只有主备都写成功,才向应用返回成功. 1、服务器环境 序号IP角色架构模式1192.16…

一文详解MES、ERP、SCM、WMS、APS、SCADA、PLM、QMS、CRM、EAM及其关系

经常遇到很多系统,比如:MES、ERP、SCM、WMS、APS、SCADA、PLM、QMS、CRM、EAM,这些都是什么系统?有什么功能和作用?它们之间的关系是怎样的? 今天就一文详细分享给大家。 10大系统之间的关系 ERP 和其他…

深度学习之PyTorch实现卷积神经网络(CNN)

在深度学习领域,卷积神经网络(Convolutional Neural Networks,CNN)是一种非常强大的模型,专门用于处理图像数据。CNN通过卷积操作和池化操作来提取图像中的特征,具有较好的特征学习能力,特别适用…

机器学习算法快速入门

文章目录 0.简介1.常用术语1) 模型2) 数据集3) 样本&特征4) 向量5) 矩阵6)假设函数&损失函数7)拟合&过拟合&欠拟合 2.线性回归3.梯度下降求极值4.Logistic回归算法(分类问题)5.KNN最邻近分类算法6.朴素贝叶斯分类算法7.决策树…

Python调用微信OCR识别文字和坐标

原理 在看雪看到一篇文章:逆向调用QQ截图NT与WeChatOCR-软件逆向。里面说了怎么调用微信和QQ本地的OCR模型,还有很详细的分析过程。 我稍微看了下文章,多的也看不懂。大概流程是使用mmmojo.dll这个dll来与WeChatOCR.exe做通信的&#xff0c…

1688拍立淘接口:图像识别技术引领电商搜索新革命,打造智能购物新体验!

1688拍立淘接口:技术解析与应用实践 一、引言 在电子商务蓬勃发展的今天,图像识别技术正逐渐成为各大电商平台提升用户体验、优化搜索效率的关键技术之一。作为阿里巴巴旗下的B2B采购批发平台,1688也紧跟技术潮流,推出了拍立淘接…

Dos命令的基础

雷迪斯and the乡亲们 欢迎你们来到 奇幻的编程世界 一、DOS命令基础 提示符 根目录:进入大到分区后,最外层的目录就是跟目录 工作目录:当前的所在位置/所在文件夹 二、cd命令 切换工作目录: cd 格式: cd 目标 …

巧避海森堡不确定性原理!量子比特读出技术重磅突破

内容来源:量子前哨(ID:Qforepost) 文丨浪味仙 排版丨沛贤 深度好文:1200字丨7分钟阅读 摘要:阿尔托大学研究人员用微测辐射热计替代传统参数放大器,以更少的附加噪声实现非侵入式量子比特测量…

排序链表 - LeetCode 热题 33

大家好!我是曾续缘😹 今天是《LeetCode 热题 100》系列 发车第 33 天 链表第 12 题 ❤️点赞 👍 收藏 ⭐再看,养成习惯 排序链表 给你链表的头结点 head ,请将其按 升序 排列并返回 排序后的链表 。 示例 1&#xff1a…

带你追踪 ICASSP 2024会议现场 韩国夜景令人陶醉

会议之眼 快讯 昨天,2024年的ICASSP(International Conference on Acoustics, Speech, and Signal Processing)即国际声学、语音和信号处理会议已经在韩国首尔拉开帷幕!吸引了众多热情的与会者!本届ICASSP会议举办日期…

实验笔记之——RGBD GS-ICP SLAM配置与测试

《RGBD GS-ICP SLAM》是最新开源的一个3DGS-SLAM工作,通过利用GICP来实现当前帧gaussian与已mapping的gaussian进行匹配进行位姿的估算,并通过关键帧的选择策略来进一步提升performance~ Use G-ICP to align the current frame with the 3D GS map whic…

Redis消息队列-基于PubSub的消息队列

7.3 Redis消息队列-基于PubSub的消息队列 PubSub(发布订阅)是Redis2.0版本引入的消息传递模型。顾名思义,消费者可以订阅一个或多个channel,生产者向对应channel发送消息后,所有订阅者都能收到相关消息。 SUBSCRIBE …

OpenHarmony实战开发-图片选择和下载保存案例。

介绍 本示例介绍图片相关场景的使用:包含访问手机相册图片、选择预览图片并显示选择的图片到当前页面,下载并保存网络图片到手机相册或到指定用户目录两个场景。 效果图预览 使用说明 从主页通用场景集里选择图片选择和下载保存进入首页。分两个场景点…

Linux的重要命令(二)+了解Linux目录结构

目录 一.Linux的目录结构 二.查看文件内容命令 1.cat 命令 2.more 命令 3.less 命令 4.head 命令 5.tail 命令 6.拓展 head 和 tail 的其他用法 ​编辑 三.统计文件内容的命令-wc ​编辑 四.检索和过滤文件内容的命令-grep ​编辑 ​编辑 五.压缩命令 gzip 和 bz…