mybatis的拦截器_拦截所有来电怎么设置

mybatis的拦截器_拦截所有来电怎么设置一、官网介绍MyBatis允许你在已映射语句执行过程中的某一点进行拦截调用。默认情况下,MyBatis允许使用插件来拦截的方法调用包括:Executor(update,query,flushStatements,commit,rollback,getTransaction,close,isClosed)拦截执行器的方法; ParameterHandler(ge…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

一、官网介绍

MyBatis 允许你在已映射语句执行过程中的某一点进行拦截调用。默认情况下,MyBatis 允许使用插件来拦截的方法调用包括:

  • Executor (update, query, flushStatements, commit, rollback, getTransaction, close, isClosed)   拦截执行器的方法;
  • ParameterHandler (getParameterObject, setParameters) 拦截参数的处理;
  • ResultSetHandler (handleResultSets, handleOutputParameters)  拦截结果集的处理;
  • StatementHandler (prepare, parameterize, batch, update, query) 拦截Sql语法构建的处理

 

/ ExamplePlugin.java@Intercepts({@Signature(
type= Executor.class,
method = "update",
args = {MappedStatement.class,Object.class})})public class ExamplePlugin implements Interceptor {
private Properties properties = new Properties();
public Object intercept(Invocation invocation) throws Throwable {
// implement pre processing if need
Object returnObject = invocation.proceed();
// implement post processing if need
return returnObject;
}
public void setProperties(Properties properties) {
this.properties = properties;
}}
<!-- mybatis-config.xml --><plugins>
<plugin interceptor="org.mybatis.example.ExamplePlugin">
<property name="someProperty" value="100"/>
</plugin></plugins>

这些类中方法的细节可以通过查看每个方法的签名来发现,或者直接查看 MyBatis 发行包中的源代码。 如果你想做的不仅仅是监控方法的调用,那么你最好相当了解要重写的方法的行为。 因为如果在试图修改或重写已有方法的行为的时候,你很可能在破坏 MyBatis 的核心模块。 这些都是更低层的类和方法,所以使用插件的时候要特别当心。
通过 MyBatis 提供的强大机制,使用插件是非常简单的,只需实现 Interceptor 接口,并指定想要拦截的方法签名即可。

二、具体实现

1、业务需求

业务需求是在原来基础上做一个离线版的系统,需要把在线版选择的业务数据导出,导入到离线版中操作,同时在线版导出的数据需要上锁,不能进行更新操作和相关联的新增操作。

2、具体实现

统计所有相关的业务表,增加上锁的标志位(is_lock),默认值为0为未上锁状态,1为上锁状态。自定义mybatis拦截器,拦截所有更新操作 ,截取sql语句判断当前数据表是否为相关的业务表,如果是则追加 and is_lock = “0” 的筛选条件。如果未加锁该记录会被更新,如果加锁则该记录不会发生变化。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/195569.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • navicat premiun15激活码【最新永久激活】2022.02.25

    (navicat premiun15激活码)2021最新分享一个能用的的激活码出来,希望能帮到需要激活的朋友。目前这个是能用的,但是用的人多了之后也会失效,会不定时更新的,大家持续关注此网站~IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.cn/100143.html…

  • 颜色空间RGB与HSV(HSL)的转换

    颜色空间RGB与HSV(HSL)的转换

    2021年12月16日
  • 只看这一篇就够:快速了解联邦学习技术及应用实践[通俗易懂]

    只看这一篇就够:快速了解联邦学习技术及应用实践[通俗易懂]随着大数据的进一步发展,重视数据隐私和安全已经成为了世界性的趋势,同时,大多数行业数据呈现数据孤岛现象,如何在满足用户隐私保护、数据安全和政府法规的前提下,进行跨组织的数据合作是困扰人工智能从业者的一大难题。而“联邦学习”将成为解决这一行业性难题的关键技术。今天和大家分享下咱们微众银行AI团队主导的新一代联邦学习技术及应用,并详细介绍联邦学习落地的全球首个工业级开源平台——Federated…

    2022年10月30日
  • linux 常用命令

    linux 常用命令

    2021年10月10日
  • Java-线程池面试题

    Java-线程池面试题线程池前言什么是线程池为什么要使用线程池线程池有哪些作用线程池的创建方式如何实现复用ThreadPoolExecutor核心参数其他相关总结前言线程池在面试、开发过程中都比较重要。本文总结了一些关于该方面的相关知识点。以下内容收集于蚂蚁课堂什么是线程池线程池和数据库连接池非常类似,可以统一管理和维护线程,减少没有必要的开销。为什么要使用线程池因为在项目开发过程中频繁的开启线程或者停止线程,线程需要重新被CPU从就绪状态调度到运行状态,需要发生CPU的上下文切换,效率非常低。线程的生命周期如

  • JAVA日本免费动漫_漫画 | Java多线程与并发(一)

    JAVA日本免费动漫_漫画 | Java多线程与并发(一)1、什么是线程?2、线程和进程有什么区别?3、如何在Java中实现线程?4、Java关键字volatile与synchronized作用与区别?volatile修饰的变量不保留拷贝,直接访问主内存synchronized用来修饰一个方法或者一个代码块的时候,能够保证在同一时刻最多只有一个线程执行该段代码5、有哪些不同的线程生命周期?6、你对线程优先级的理解是什么?7、什么是死锁(Deadlock)…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号