首页 > 其他分享 >MyBatis拦截器执行流程!!!

MyBatis拦截器执行流程!!!

时间:2024-03-13 20:01:00浏览次数:32  
标签:拦截器 流程 ibatis apache org MyBatis import lastUpdateBy

前提:将自定义的拦截器注入IOC容器。

1、创建自定义拦截器,实现Interceptor接口,重写interceptor()方法

2、在自定义拦截器上使用@Interceptors注解,在该注解中使用@Signature指定拦截的接口类型,方法名与参数类型。

实例:

/*
 * Copyright (c) 2020, 2024,  All rights reserved.
 *
 */
package com.by.config;

import cn.hutool.core.util.ReflectUtil;
import cn.scl.core.threadlocal.LocalUserUtil;
import lombok.Singular;
import org.apache.ibatis.executor.parameter.ParameterHandler;
import org.apache.ibatis.plugin.Interceptor;
import org.apache.ibatis.plugin.Intercepts;
import org.apache.ibatis.plugin.Invocation;
import org.apache.ibatis.plugin.Signature;
import org.springframework.stereotype.Component;

import java.lang.reflect.Field;
import java.sql.PreparedStatement;
import java.time.LocalDateTime;

/**
 * <p>Project: wms-root - ParameterPlugin</p>
 * <p>Powered by scl On 2024-03-13 10:14:21</p>
 * <p>描述:<p>
 *
 * @author 孙臣龙 [[email protected]]
 * @version 1.0
 * @since 17
 */
@Component
@Intercepts({@Signature(type = ParameterHandler.class,
        method = "setParameters",
        args = {PreparedStatement.class})})
public class ParameterPlugin implements Interceptor {

    /**
     * 统一设置lastUpdateBy的值
     * @param invocation
     * @return
     * @throws Throwable
     */
    @Override
    public Object intercept(Invocation invocation) throws Throwable {
        ParameterHandler parameterHandler = (ParameterHandler) invocation.getTarget();
        Object parameterObject = parameterHandler.getParameterObject();
        Field lastUpdateBy = ReflectUtil.getField(parameterObject.getClass(), "lastUpdateBy");
        if (lastUpdateBy != null) {
            ReflectUtil.setFieldValue(parameterObject, lastUpdateBy, LocalUserUtil.getLocalUser().getNickName());
        }
        return invocation.proceed();
    }
}

标签:拦截器,流程,ibatis,apache,org,MyBatis,import,lastUpdateBy
From: https://blog.csdn.net/qq_64847107/article/details/136675719

相关文章

  • 深入理解Android启动流程:从按下电源键到Launcher的呈现
    引言Android系统的启动过程是一个复杂而精巧的机制,涉及到硬件初始化、内核引导、系统服务加载等多个环节。本文将对Android设备从按下电源键到启动完成并显示Launcher界面这一整个启动流程进行详细的剖析。一、硬件初始化与BootLoader阶段硬件初始化:当用户按下电源键后,......
  • Mybatis20_MyBatis核心配置文件深入7
    一、typeHandler概述无论是MyBatis在预处理语句(PreparedStatement)中设置一个参数时,还是从结果集中取出一个值时,都会用类型处理器将获取的值以合适的方式转换成Java类型。下表描述了一些默认的类型处理器(截取部分)。你可以重写类型处理器或创建你自己的类型处理器来......
  • Mybatis Plus(上篇)
    1.MybatisPlus工作流程:扫描实体类,通过反射进行抽取,然后分析表与实体类的关系,以及属性与当前字段的关系,然后再根据当前调用的方法生成对应的SQl,然后注入到容器中结论:根据你的实体类,里面有啥它就分析啥用啥2.用mabatisplus必须在启动类里,写@MapperScan("xxxxxxxx.mapper")......
  • ②【MyBatis】 Mapper代理方式开发( 常用 )
    个人简介:Java领域新星创作者;阿里云技术博主、星级博主、专家博主;正在Java学习的路上摸爬滚打,记录学习的过程~个人主页:.29.的博客学习社区:进去逛一逛~②【MyBatis】Mapper代理方式⚪使用Mapper代理方式开发1.Mapper接口与SQL映射文件2.设置映射文件namespace......
  • 44. Boss 制作和整体流程
    本节目标给精英敌人场景添加精英,给Boss场景添加Boss实现方法精英敌人场景添加精英将普通敌人拷贝一份复制到精英场景,把Spine动画拖过去,拖过去记得选SkeletonMecaim,还要修改一下图层,让它来到default层然后编辑EliteEnemy_Controller,动画状态机内容如下它和普通小怪的......
  • SpringMVC拦截器
    SpringMVC拦截器拦截器介绍拦截器同过滤器一样,都是面向切面编程—AOP的具体实现,符合横切关注点的功能都可以考虑使用AOP实现;可以使用Interceptor来执行某些任务,例如在Controller处理请求之前编写日志,添加或配置更新配置;在Spring中,当请求发送到Controller处理之前,他必......
  • c#发布流程
    首先要区别项目环境为线上,还是线下。线上项目: 就是项目已经上线,有大量客户在使用,有实时数据。此时需要备份原始数据,数据库,及代码等相关文件。线下项目:就是项目还没有上线,没有客户使用,就是没有实时数据。也需要考虑数据库备份。代码库备份。方便出现无法修复的bug后还......
  • MyBatisPlus代码生成器(新)
    MyBatisPlus代码生成器(新)注意:适用版本:mybatis-plus-generator3.5.1以上版本参考:官网本次配置:JDK17+SpringBoot3.1.5+MyBatisPlus3.5.3.1注意:mybatis-plus-generator版本需与mybatis-plus版本一致最新依赖参考:https://mvnrepository.com/artifact/com.baomid......
  • 【图像超分】论文复现:新手入门!Pytorch实现SRCNN,数据预处理、模型训练、测试、评估全流
    文章目录前言1.准备数据集和数据预处理1.1数据集选择1.2数据预处理1.3评估指标PSNR和SSIM1.3.1PSNR1.3.2SSIM2.定义网络结构3.设置参数并训练模型3.1参数设置3.2模型训练4.测试训练好的模型5.用训练好的SRCNN模型超分自己的图像数据6.其他补充6.1特征图......
  • springcloud 基础组件-Feign 调用流程
    原图来自:https://blog.csdn.net/luanlouis/article/details/82821294所有注册的feignclientorg.springframework.cloud.openfeign.FeignAutoConfiguration#feignContext决定使用哪种client的地方org.springframework.cloud.openfeign.FeignAutoConfiguration.OkHttpFeignCo......