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” 的筛选条件。如果未加锁该记录会被更新,如果加锁则该记录不会发生变化。

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

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

(0)
上一篇 2025年10月14日 下午6:22
下一篇 2025年10月14日 下午7:01


相关推荐

  • setscale方法的用法_BigDecimal的setScale()方法无效

    setscale方法的用法_BigDecimal的setScale()方法无效最近在使用BigDecimal进行四舍五入时,发现setScale()方法设置的精度值并没有起作用,一度让我怀疑起是否jdk有bug,代码如下:错误代码doubled=7.199999999999999;BigDecimaldecimal=newBigDecimal(String.valueOf(d));decimal.setScale(2,BigDecimal.ROUND_HAL…

    2022年10月20日
    4
  • 高通平台dtb文件的加载过程「建议收藏」

    高通平台dtb文件的加载过程「建议收藏」高通平台dtb文件的加载过程高通平台对dts的两种打包方式zImage-dtbdt.imgzImage-dtb方式zImage-dtb的编译二进制文件查看lk的加载过程代码分析dt.img方式dt.img的编译lk的加载过程新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyP…

    2025年7月5日
    8
  • java lambda表达式详解_lambda表达式有什么组成

    java lambda表达式详解_lambda表达式有什么组成看不懂同事写的Lambda,所以来学Lambda

    2025年8月6日
    4
  • WebLogic的下载与安装

    WebLogic的下载与安装一、WebLogic的介绍WebLogic是美国bea公司出品的一个applicationserver,确切的说是一个基于Javaee架构的中间件,纯java开发的,最新版本WebLogicSe

    2022年7月1日
    33
  • 数仓工具—Hive语法之常见排序方式(7)

    数仓工具—Hive语法之常见排序方式(7)1 orderby 是全局排序 可能性能会比较差 2 sortby 分区内有序 往往配合 distributeby 来确定该分区都有那些数据 3 distributeby 确定了数据分发的规则 满足相同条件的数据被分发到一个 reducer4 clusterby 当 distributeby 和 sortby 字段相同时 可以使用 clusterby 代替 distributeby 和 sortby 但是 clusterby 默认是升序 不能指定排序方向

    2026年3月18日
    3
  • 【python】Excel转json「建议收藏」

    【python】Excel转json「建议收藏」importxlrd,json,osdata=xlrd.open_workbook(“working_file.xls”)public=[]tables=[(excelName,data.sheet_by_name(excelName))forexcelNameindata.sheet_names()]#表由多个相同的表,数据为两列组成filePath=”picture_folder_path”#图片路径forindex,dataSetintabl

    2022年6月6日
    42

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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