前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >mybatis的拦截器_拦截所有来电怎么设置

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

作者头像
全栈程序员站长
发布2022-09-30 11:26:29
1760
发布2022-09-30 11:26:29
举报

大家好,又见面了,我是你们的朋友全栈君。

一、官网介绍

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

  • Executor (update, query, flushStatements, commit, rollback, getTransaction, close, isClosed) 拦截执行器的方法;
  • ParameterHandler (getParameterObject, setParameters) 拦截参数的处理;
  • ResultSetHandler (handleResultSets, handleOutputParameters) 拦截结果集的处理;
  • StatementHandler (prepare, parameterize, batch, update, query) 拦截Sql语法构建的处理
代码语言:javascript
复制
/ 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;
}}
代码语言:javascript
复制
<!-- 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” 的筛选条件。如果未加锁该记录会被更新,如果加锁则该记录不会发生变化。

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

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2022年9月9日 下,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档