mybatis拦截器使用实践

mybatis拦截器使用实践

一.业务背景:

一般数据表中都有创建/修改时间字段,新增/修改数据时,更新时间戳。可以通过拦截器来实现这一需求

二.实现步骤

1.继承Interceptor接口,实现intercept方法

Interceptor接口

Interceptor接口中,有3个方法

intercept:拦截器的具体业务逻辑

plugin:生成代理对象

setProperties:给拦截器设置一些属性


拦截器的具体实现

@Intercepts:声明这是一个拦截器

@Signature:要拦截的具体方法,type-拦截接口,method-拦截的方法,args-重载时根据参数列表确定要拦截的方法

此处我们拦截的是 Executor 接口中的update方法,mybatis拦截器可以拦截4大接口,其他的这里不做陈述

intercept实现

1)首先拦截的目标对象是否正确,不是则不做处理;

2)因为只处理insert/update的sql,所以做个判断;

3)通过反射获取到DO中声明的字段,一般创建/修改时间这类公共字段都会写在基础父类中,所以从父类中获取;

4)判断时insert还是update操作,insert则同时更新创建及修改时间,update只更新修改时间;


2.注册拦截器

将MybatisGmtInterceptor拦截器注册到sqlSessionFactory中

数据源配置

3.小功告成

只要是这个sqlSessionFactory生产的sqlSession,执行insert和update语句时,就会自动更新创建及修改时间

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容