iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Mybatis 插件原理解析
  • 634
分享到

Mybatis 插件原理解析

2024-04-02 19:04:59 634人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

Mybati s作为⼀个应⽤⼴泛的优秀的ORM开源框架,这个框架具有强⼤的灵活性,在四⼤组件 (Executor

Mybati s作为⼀个应⽤⼴泛的优秀的ORM开源框架,这个框架具有强⼤的灵活性,在四⼤组件
(Executor、StatementHandler、ParameterHandler、ResultSetHandler)处提供了简单易⽤的插 件扩展机制。
mybatis对持久层的操作就是借助于四⼤核⼼对象。MyBatis⽀持⽤插件对四⼤核⼼对象进 ⾏拦截,对mybatis来说
插件就是拦截器,⽤来增强核⼼对象的功能,增强功能本质上是借助于底层的 动态代理实现的,换句话说,
MyBatis中的四⼤对象都是代理对象

在这里插入图片描述

MyBatis所允许拦截的⽅法如下:

  • 执⾏器Executor (update、query、commit、rollback等⽅法);
  • sql语法构建器StatementHandler (prepare、parameterize、batch、updates query等⽅法);
  • 参数处理器ParameterHandler (getParameterObject、setParameters⽅法);
  • 结果集处理器ResultSetHandler (handleResultSets、handleOutputParameters等⽅法);

在四⼤对象创建的时候

  • 每个创建出来的对象不是直接返回的,⽽是interceptorChain.pluginAll(parameterHandler);
  • 获取到所有的Interceptor (拦截器)(插件需要实现的接⼝);调⽤ interceptor.plugin(target);返回
  • target 包 装后的对象
  • 插件机制,我们可以使⽤插件为⽬标对象创建⼀个代理对象;aop (⾯向切⾯)我们的插件可 以为四⼤对象

创建出代理对象,代理对象就可以拦截到四⼤对象的每⼀个执⾏;
自定义插件拦截:


Intercepts ({//注意看这个⼤花括号,也就这说这⾥可以定义多个@Signature对多个地⽅拦截,都⽤这个拦截器
@Signature (type = StatementHandler .class , //这是指拦截哪个接⼝
method = "prepare",//这个接⼝内的哪个⽅法名,不要拼错了
args = { Connection.class, Integer .class}), 这是拦截的⽅法的⼊参,按顺序写到
这,不要多也不要少,如果⽅法重载,可是要通过⽅法名和⼊参来确定唯⼀的
})
public class MyPlugin implements Interceptor {
private final Logger logger = LoggerFactory.getLogger(this.getClass());
// //这⾥是每次执⾏操作的时候,都会进⾏这个拦截器的⽅法内
Override
public Object intercept(Invocation invocation) throws Throwable {
//增强逻辑
System.out.println("对⽅法进⾏了增强....");
return invocation.proceed(); //执⾏原⽅法
}

Override
public Object plugin(Object target) {
System.out.println("将要包装的⽬标对象:"+target);
return Plugin.wrap(target,this);
 }

//插件初始化的时候调⽤,也只调⽤⼀次,插件配置的属性从这⾥设置进来
Override
public void setProperties(Properties properties) {
System.out.println("插件配置的初始化参数:"+properties );
} }

到此这篇关于Mybatis 插件原理解析的文章就介绍到这了,更多相关Mybatis 插件原理内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: Mybatis 插件原理解析

本文链接: https://www.lsjlt.com/news/137875.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Mybatis 插件原理解析
    Mybati s作为⼀个应⽤⼴泛的优秀的ORM开源框架,这个框架具有强⼤的灵活性,在四⼤组件 (Executor...
    99+
    2024-04-02
  • mybatis-plugin插件执行原理解析
    mybatis-plugin插件执行原理 今天主要是在看mybatis的主流程源码,其中比较感兴趣的是mybatis的plugin功能,这里主要记录下mybatis-plugin的插...
    99+
    2022-11-13
    mybatis-plugin插件 mybatis-plugin插件原理
  • MyBatis插件的原理是什么
    本篇文章为大家展示了MyBatis插件的原理是什么,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。 插件原理分析mybatis插件涉及到的几个类:我将以 E...
    99+
    2024-04-02
  • Mybatis插件机制详细解析
    本篇内容介绍了“Mybatis插件机制详细解析”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!Mybatis...
    99+
    2024-04-02
  • MyBatis分页插件PageHelper的使用与原理
    目录MyBatis使⽤PageHelper1.limit分⻚2.PageHelper插件MyBatis使⽤PageHelper 1.limit分⻚ (1)概念: ①页码:pageNu...
    99+
    2023-02-24
    MyBatis分页插件PageHelper MyBatis分页插件 MyBatis PageHelper
  • 解析Mybatis SqlSessionFactory初始化原理
    目录引言SqlSessionFactory不使用 XML 构建 SqlSessionFactorySqlSessionFactoryBuilder拓展引言 现在内卷越来越严重,关于...
    99+
    2024-04-02
  • Mybatis省略@Param注解原理分析
    目录1、新建mybatis的Demo项目2、添加-parameters参数后的执行结果如下3、springboot项目为什么不用另外配置-parameters参数呢环境配置: jdk...
    99+
    2024-04-02
  • Mybatis分页插件的示例分析
    这篇文章主要介绍Mybatis分页插件的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!Mybatis分页插件的实例详解1.前言:我们知道,在MySQL中,分页的sql是使用l...
    99+
    2024-04-02
  • Mybatis第三方PageHelper分页插件的使用与原理
    目录​用法​原理PageHelper.startPage做了什么Page分页信息在哪使用拦截器插件拦截器链加载&调用拦截器@Intercepts注解通过PageHelper创...
    99+
    2024-04-02
  • 分析mybatis运行原理
    目录一、Mybatis基本认识1.1、动态代理1.2、反射二、Configuration对象作用三、映射器结构四、sqlsession执行流程(源码跟踪)4.1、Executor4....
    99+
    2024-04-02
  • Mybatis源码分析之插件模块
    Mybatis插件模块 插件这个东西一般用的比较少,就算用的多的插件也算是PageHelper分页插件; PageHelper官网:https://github.com/pagehe...
    99+
    2024-04-02
  • 详解Mybatis的分页插件
    一、概述 Mybatis 是一款非常流行的持久层框架,可以帮助我们轻松地实现数据库操作和数据访问。在 Mybatis中,如何对数据进行分页是一个非常常见的问题,现在,我们可以通过使用...
    99+
    2023-05-19
    Mybatis分页 Mybatis插件
  • 如何分析Swiper插件的原理和使用
    今天给大家介绍一下如何分析Swiper插件的原理和使用。文章的内容小编觉得不错,现在给大家分享一下,觉得有需要的朋友可以了解一下,希望对大家有所帮助,下面跟着小编的思路一起来阅读吧。Swiper介绍swiper是一款开源的解决前端开发中触摸...
    99+
    2023-06-29
  • 原理分析Java Mybatis中的Mapper
    目录准备1.pom文件2.user类-数据库3.实体类4.dao 层5.Mapper 文件源码分析1.断点2.查看源码总结准备 1.pom文件 <dependencies&g...
    99+
    2024-04-02
  • MyBatis加解密插件的示例详解
    目录一、需求背景二、思路解析2.1 系统架构2.2 系统流程三、方案制定3.1 MyBatis插件简介3.2 Spring-MyBatis执行流程3.3 MyBatis插件的创建时机...
    99+
    2024-04-02
  • Mybatis-Plus注入SQL原理分析
    目录前言案例测试原理解析前言 MyBatis-Plus 是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。 那么 MyBat...
    99+
    2024-04-02
  • Mybatis(七):分页插件
    Mybatis(七):分页插件 前言一、概述二、安装和配置三、使用分页插件四、总结 前言 本博主将用CSDN记录软件开发求学之路上亲身所得与所学的心得与知识,有兴趣的小伙伴可以关注博主!也...
    99+
    2023-09-14
    mybatis java 数据库
  • MyBatis插件机制超详细讲解
    目录MyBatis的插件机制InterceptorChainMyBatis中的PluginMyBatis插件开发总结MyBatis的插件机制 MyBatis 允许在已映射语句执行过程...
    99+
    2022-11-13
    MyBatis插件机制 MyBatis插件机制原理 MyBatis插件
  • 详解MyBatis工作原理
    目录一、Mybatis工作原理二、Mybatis运行原理总结一、Mybatis工作原理 Mybatis分层框架图 Mybatis工作原理图 源码分析:一般都是从helloworl...
    99+
    2024-04-02
  • React合成事件原理解析
    目录事件介绍什么是事件?举个栗子代码实现React合成事件基础知识什么是合成事件?在React中事件的写法和原生事件写法的区别?为什么会有合成事件?合成事件机制简述React合成事件...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作