Mybatis-Plus自动填充更新操作相关字段的实现
程序员文章站
2022-03-27 09:29:09
在阿里开发手册的建表规约中有说明,数据库表中应该都要有create_time、update_time字段;那么在开发中,对于这些共有字段的处理应该要进行统一,这样就可以简化我们的开发过程。那么本文就对...
在阿里开发手册的建表规约中有说明,数据库表中应该都要有create_time、update_time字段;那么在开发中,对于这些共有字段的处理应该要进行统一,这样就可以简化我们的开发过程。那么本文就对mybatis-plus中的字段自动填充进行记录。
场景介绍
在项目的数据表设计中,每张表都有create_id、create_time、update_id、update_time这四个字段,那么在java应用中,针对新增和修改操作要对这四个字段进行相应的更改:
- create_id、update_id要自动填充为当前登录的用户id
- create_time、update_time要自动填充为当前时间
下面说说代码实现:
自动填充处理器
需要实现mybatis-plus中的metaobjecthandler接口
import com.baomidou.mybatisplus.core.handlers.metaobjecthandler; import hw.topevery.basis.runtime.userruntime; import org.apache.ibatis.reflection.metaobject; import org.springframework.stereotype.component; import java.time.localdatetime; import java.util.objects; /** * 更新相关字段处理器 * * @author whw * @date 2020/1/3 16:41 */ @component public class updaterelatedfieldsmetahandler implements metaobjecthandler { /** * 新增操作 * * @param metaobject */ @override public void insertfill(metaobject metaobject) { this.strictinsertfill(metaobject, "createid", string.class, getcurrentuserid()); this.strictinsertfill(metaobject, "createtime", localdatetime.class, localdatetime.now()); this.strictinsertfill(metaobject, "updateid", string.class, getcurrentuserid()); this.strictinsertfill(metaobject, "updatetime", localdatetime.class, localdatetime.now()); } /** * 更新操作 * * @param metaobject */ @override public void updatefill(metaobject metaobject) { this.strictupdatefill(metaobject, "updateid", string.class, getcurrentuserid()); this.strictupdatefill(metaobject, "updatetime", localdatetime.class, localdatetime.now()); } /** * 获取当前登录用户id * * @return */ private string getcurrentuserid() { return "当前登录用户id"; } }
mybatis-plus配置类
需要将处理器注入进spring容器才会生效
import com.baomidou.mybatisplus.core.config.globalconfig; import com.baomidou.mybatisplus.extension.plugins.paginationinterceptor; import hw.topevery.kunming.wapi.handler.updaterelatedfieldsmetahandler; import org.springframework.context.annotation.bean; import org.springframework.context.annotation.configuration; /** * mybatis-plus配置类 * * @author whw * @date 2020/1/3 16:41 */ @configuration public class mybatisplusconfig { @bean public globalconfig globalconfig() { globalconfig globalconfig = new globalconfig(); globalconfig.setmetaobjecthandler(new updaterelatedfieldsmetahandler()); return globalconfig; } }
配置实体类中相关字段的自动填充策略
在@tablefield注解中设置fill属性
字段填充策略fieldfill说明
值 | 描述 |
---|---|
default | 默认不处理 |
insert | 插入填充字段 |
update | 更新填充字段 |
insert_update | 插入和更新填充字段 |
import com.baomidou.mybatisplus.annotation.fieldfill; import com.baomidou.mybatisplus.annotation.tablefield; import io.swagger.annotations.apimodelproperty; import lombok.data; import java.io.serializable; import java.time.localdatetime; /** * 基础实体类 * * @author whw * @date 2020/1/3 17:37 */ @data public class baseentity implements serializable { private static final long serialversionuid = 1l; @apimodelproperty(value = "创建用户id") @tablefield(value = "c_create_id", fill = fieldfill.insert) private string createid; @apimodelproperty(value = "创建时间") @tablefield(value = "c_create_time", fill = fieldfill.insert) private localdatetime createtime; @apimodelproperty(value = "更新用户id") @tablefield(value = "c_update_id", fill = fieldfill.insert_update) private string updateid; @apimodelproperty(value = "更新时间") @tablefield(value = "c_update_time", fill = fieldfill.insert_update) private localdatetime updatetime; }
我这边是在实体中抽取了一个父类出来,当然也可以直接在实体类的对应字段上添加注解。
到此这篇关于mybatis-plus自动填充更新操作相关字段的实现的文章就介绍到这了,更多相关mybatis-plus自动填充更新内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!
下一篇: css Blueprint是什么
推荐阅读
-
MyBatis-Plus - 实现字段自动填充功能
-
Mybatis-Plus自动填充更新操作相关字段的实现
-
Mybatis-Plus自动填充的实现示例
-
在MyBatisPlus中使用@TableField完成字段自动填充的操作
-
关于Mybatis-Plus字段策略与数据库自动更新时间的一些问题
-
linux下SVN配置实现项目目录自动更新以及源码安装的操作方法
-
SpringBoot集成Mybatis-plus并实现自动生成相关文件的示例代码
-
PHP,操作多个用户,多个线程的session,实现用户登陆状态session值的自动更新
-
如何实现数据表中某个字段在每天固定时间的自动更新
-
PHP,操作多个用户,多个线程的session,实现用户登陆状态session值的自动更新