repository和mapper(java怎么拦截mapper方法)

:暂无数据 2026-04-30 20:00:01 0
很多朋友初次接触repository和mapper可能会觉得有点陌生,这很正常。今天这篇文章,咱们就一起把java怎么拦截mapper方法这事儿聊透,希望能帮您理清思路。

本文目录

java怎么拦截mapper方法

1、使用@Aspect注解
要去使用jdk的代理,否则代理不了mapper(即mybatis代理的mapper没有默认的构造器,cglib无法再给这个代理构造代理,会报如下错误*****: Could not generate CGLIB subclass of class : Common causes of this problem include using a final class or a non-visible class; nested exception is *****: Cannot subclass final class class *****.$Proxy13)
《!-- 启动对@Aspectj的支持 true为cglib,false为jdk代理,为true的话,会导致拦截不了mybatis的mapper--》
《aop:aspectj-autoproxy proxy-target-class="false" /》
之后就是使用注解去配置拦截,进行修改记录的操作
@Aspect
@Component
public class DatalogAspect {
private static final Logger logger = *****(*****);
@Resource
private ActionMapper actionMapper;
@Pointcut("execution(public * *****.*.insert*(..)) && !execution(public * ******(..))")
public void insert(){
}
@Pointcut("execution(public * *****.*.update*(..))")
public void update(){
}
@Pointcut("execution(public * *****.*.delete*(..))")
public void delete(){
}
@Around("insert() || update() || delete()")
public Object addOperateLog(ProceedingJoinPoint pjp) throws Throwable {
...
}
}
2、使用MethodInterceptor
使用aopalliance的MethodInterceptor
(1)配置文件
去掉对@Aspect注解的支持(也可以不去掉,只要不是proxy-target-class = true就可以)。然后配置aop
《bean id="datalogInterceptor" class="*****" /》
《aop:config》
《aop:pointcut id="datalogInsertPointCut" expression="execution(* *****..insert*(..)) && !execution(* *****.*(..))" /》
《aop:pointcut id="datalogUpdatePointCut" expression="execution(* *****..update*(..)) && !execution(* *****.*(..))" /》
《aop:pointcut id="datalogDeletePointCut" expression="execution(* *****..delete*(..)) && !execution(* *****.*(..))" /》
《aop:advisor advice-ref="datalogInterceptor" pointcut-ref="datalogInsertPointCut" /》
《aop:advisor advice-ref="datalogInterceptor" pointcut-ref="datalogUpdatePointCut" /》
《aop:advisor advice-ref="datalogInterceptor" pointcut-ref="datalogDeletePointCut" /》
《/aop:config》
(2)实现MethodInterceptor
public class DatalogInterceptor implements MethodInterceptor{
private static final Logger logger = *****(*****);
public DatalogInterceptor() {
}
@Resource
private ActionMapper actionMapper;
@Override
public Object invoke(MethodInvocation methodInvocation) throws Throwable {
Method method = *****();
String methodName = *****();
Class《?》 cls = *****();
Object service = *****();
Object args = *****();
Integer actionType = -1;
...
}
}

@mybatisrepository什么意思

应该是自定义的注解,方便*****的扫描。

MyBatis是一个支持普通**L查询,存储过程和高级映射的优秀持久层框架。

repository一般作为持久层的Dao的命名

例子:

@Retention(*****)
@Target(*****)
@Documented
@Component
public @inte***ce MyBatisRepository {
   String value() default "";
}

理解repository和mapperjava怎么拦截mapper方法只是开始,真正的收获在于你的实践与思考。
本文编辑:admin

更多文章:


length函数c++中怎么用(s.length()的C++代码是什么意思)

length函数c++中怎么用(s.length()的C++代码是什么意思)

大家好,如果您还对length函数c++中怎么用不太了解,没有关系,今天就由本站为大家分享length函数c++中怎么用的知识,包括s.length()的C++代码是什么意思的问题都会给大家分析到,还望可以解决大家的问题,下面我们就开始吧!

2026年4月30日 21:40

作业指导书英文(来料加工手册 英文怎么说)

作业指导书英文(来料加工手册 英文怎么说)

当我们讨论作业指导书英文时,我们真正需要关注的是什么?很多高手的答案都指向了:来料加工手册 英文怎么说。为什么?

2026年4月30日 21:20

vue textarea高度自适应(随着输入文字的多少,textarea自动变化高度)

vue textarea高度自适应(随着输入文字的多少,textarea自动变化高度)

在了解vue textarea高度自适应的过程中,您是否也曾对随着输入文字的多少,textarea自动变化高度感到困惑?别担心,接下来我将结合常见场景,带您一步步理清其中的关键点。

2026年4月30日 21:00

items的中文(itms中文是什么意思)

items的中文(itms中文是什么意思)

大家好,如果您对items的中文还心存疑问,别着急,今天这篇文章就将围绕itms中文是什么意思为您展开详细解说。

2026年4月30日 20:40

pg数据库和mysql(数据库软件都有那些)

pg数据库和mysql(数据库软件都有那些)

想快速搞懂pg数据库和mysql吗?本文将围绕数据库软件都有那些等核心问题,用最直白的语言为您提供一份实用指南,帮您节省大量摸索的时间。

2026年4月30日 20:20

repository和mapper(java怎么拦截mapper方法)

repository和mapper(java怎么拦截mapper方法)

很多朋友初次接触repository和mapper可能会觉得有点陌生,这很正常。今天这篇文章,咱们就一起把java怎么拦截mapper方法这事儿聊透,希望能帮您理清思路。

2026年4月30日 20:00

数据库名词解释(iel数据库名词解释)

数据库名词解释(iel数据库名词解释)

从一个常见的误区说起:很多人学数据库名词解释,却忽略了iel数据库名词解释。结果事倍功半。希望你不会再犯这个错误。

2026年4月30日 19:40

计算机二级c语言题库有必要算刷完吗(2021年计算机二级C语言选择题必须对20道(一半)才能过吗)

计算机二级c语言题库有必要算刷完吗(2021年计算机二级C语言选择题必须对20道(一半)才能过吗)

有没有觉得计算机二级c语言题库有必要算刷完吗听起来很高深?别怕,今天我们就把它和2021年计算机二级C语言选择题必须对20道(一半)才能过吗一起,拆解成易懂的小知识点。

2026年4月30日 19:20

exploit的名词(a sense of achievement为什么不加s)

exploit的名词(a sense of achievement为什么不加s)

关于exploit的名词,您需要知道的几个关键点,尤其是a sense of achievement为什么不加s的深入解析,我们都将在这篇文章中涵盖。

2026年4月30日 19:00

chimney(这英文单词 chimney / dictionary 怎么读)

chimney(这英文单词 chimney / dictionary 怎么读)

嗨,正在屏幕前搜索chimney的你,是否也被这英文单词 chimney / dictionary 怎么读的问题困扰过?今天这篇内容就是为你准备的。

2026年4月30日 18:40

最近更新

items的中文(itms中文是什么意思)
2026-04-30 20:40:02 浏览:0
repository和mapper(java怎么拦截mapper方法)
2026-04-30 20:00:01 浏览:0
exploit的名词(a sense of achievement为什么不加s)
2026-04-30 19:00:02 浏览:0
chimney(这英文单词 chimney / dictionary 怎么读)
2026-04-30 18:40:02 浏览:0
热门文章

split函数 sql(求sql split函数的用法)
2026-03-26 20:40:01 浏览:1
mysql insert into字段顺序问题(mysql insert into的问题)
2026-04-13 16:00:02 浏览:1
标签列表