一 mybatis的拦截器
1.1 拦截器介绍
拦截器是一种基于 AOP(面向切面编程)的技术,它可以在目标对象的方法执行前后插入自定义的逻辑。
1.2 语法介绍
1.注解@Intercepts
@Intercepts({@Signature(type = StatementHandler.class, method = “prepare”, args = {Connection.class, Integer.class})})
,表示在 SQL 执行之前进行拦截处理。
@Intercepts 的作用:声明这是一个拦截器。
属性:Signature(注解)
@Signature:要拦截的具体方法
属性: type-拦截接口(四种类型 ),
method-拦截的方法(update,insert,select),
args-重载时根据参数列表确定要拦截的方法。
2.介绍:
Executor:拦截执行器的方法,例如 update、query、commit、rollback 等。可以用来实现缓存、事务、分页等功能。
ParameterHandler:拦截参数处理器的方法,例如 setParameters 等。可以用来转换或加密参数等功能。
ResultSetHandler:拦截结果集处理器的方法,例如 handleResultSets、handleOutputParameters 等。可以用来转换或过滤结果集等功能。
StatementHandler:拦截语句处理器的方法,例如 prepare、parameterize、batch、update、query 等。可以用来修改 SQL 语句、添加参数、记录日志等功能。
1.3 API接口
1.intercept:主要是写我们具体业务逻辑,比如针对增删改sql语句添加更新日期。
2.plugin:生成代理对象
3.setProperties:设置拦截器属性
二 实现案例
2.1 结构
2.2 代码
package com.ljf.springboot.mybaits.demos.utils;
import org.apache.ibatis.executor.Executor;
import org.apache.ibatis.m