首页 > 其他分享 >使用MybatisPlus为字段值进行自动填充

使用MybatisPlus为字段值进行自动填充

时间:2024-07-08 16:58:00浏览次数:11  
标签:段值 updateTime MybatisPlus 填充 自动 time Date metaObject

使用MybatisPlus为字段值进行自动填充

保存或更新数据时,前端通常不会传入诸如isDeletedcreateTimeupdateTime这三个字段,因此我们需要手动赋值。但是数据库中几乎每张表都有上述字段,所以手动去赋值就显得有些繁琐。为简化上述操作,我们可采取以下措施。

  • 首先是is_deleted字段在数据库中默认设置为0
  • create_timeupdate_time:可使用mybatis-plus的自动填充功能,所谓自动填充,就是通过统一配置,在插入或更新数据时,自动为某些字段赋值,具体配置如下,详细信息可参考官方文档

为相关字段配置触发填充的时机,例如create_time需要在插入数据时填充,而update_time需要在更新数据时填充。具体配置如下,观察@TableField注解中的fill属性。

在使用自动填充之前,需要编写一个MybatisPlus自动填充的配置类:

@Component
public class MybatisMetaObjectHandler implements MetaObjectHandler {

// 在进行插入时进行自动填充的操作
    @Override
    public void insertFill(MetaObject metaObject) {
        Date date = new Date();
	// 自动填充 createTime, updateTime字段
        this.strictInsertFill(metaObject,"createTime", Date.class,date);
        this.strictUpdateFill(metaObject,"updateTime", Date.class,date);
    }

// 在进行修改时进行自动填充的操作
    @Override
    public void updateFill(MetaObject metaObject) {
	// 自动填充updateTime字段
        this.strictUpdateFill(metaObject, "updateTime", Date.class, new Date());
    }
}

然后在 java 代码中为你需要自动填充的字段上加上对应的注解信息,例如:

@Data
public class BaseEntity {

    @Schema(description = "主键")
    @TableId(value = "id", type = IdType.AUTO)
    private Long id;

    @Schema(description = "创建时间")
    @JsonIgnore
    @TableField(value = "create_time", fill = FieldFill.INSERT)
    private Date createTime;

    @Schema(description = "更新时间")
    @JsonIgnore
    @TableField(value = "update_time",fill = FieldFill.INSERT_UPDATE)
    private Date updateTime;

    @Schema(description = "逻辑删除")
    @JsonIgnore
    @TableLogic
    @TableField("is_deleted")
    private Byte isDeleted;
}

其中:MetaObject 是 Mybatis 反射工具类,通过 MetaObject 可以获取和设置对象的属性值。

标签:段值,updateTime,MybatisPlus,填充,自动,time,Date,metaObject
From: https://www.cnblogs.com/lilyflower/p/18290225

相关文章

  • MybatisPlus使用分页功能
    MybatisPlus使用分页功能分页查询是一个很常见的需求,故Mybatis-Plus提供了一个分页插件,使用它可以十分方便的完成分页查询。下面介绍Mybatis-Plus分页插件的用法,详细信息可参考[官方文档](分页插件|MyBatis-Plus(baomidou.com))首先为分页编写一个配置类:@Configurationpub......
  • MybatisPlus配置逻辑删除
    MybatisPlus配置逻辑删除逻辑删除,可以方便地实现对数据库记录的逻辑删除而不是物理删除。逻辑删除是指通过更改记录的状态或添加标记字段来模拟删除操作,从而保留了删除前的数据,便于后续的数据分析和恢复。物理删除:真实删除,将对应数据从数据库中删除,之后查询不到此条被删除的数......
  • 多边形填充-活动边表法
    参考文档:参考1:https://blog.csdn.net/u013044116/article/details/49737585参考2:https://blog.csdn.net/keneyr/article/details/83747501算法思想:对多边形沿y轴从0开始遍历,建立边表NET。只记录顶点的x,dx,ymax。根据NET构建活动边表AET(activateedgetable)。射线与多边......
  • MybatisPlus实现插入/修改数据自动设置时间
    引言插入数据时自动设置当前时间,更新数据时自动修改日期为修改时的日期。使用MybatisPlus的扩展接口MetaObjectHandler步骤实现接口实体类加注解实现接口packagecom.example.vueelementson.common;importcom.baomidou.mybatisplus.core.handlers.MetaObjectHa......
  • MyBatisPlus
    目录引入MybatisPlus的起步依赖1、引入MybatisPlus依赖,代替Mybatis依赖2.定义Mapper常见注解@TableName:用来指定表名@Tableld:用来指定表中的主键字段信息@TableField:用来指定表中的普通字段信息 使用@TableField的常见场景:成员变量名与数据库字段名不一致​编......
  • MyBatisPlus
    1特点mybatis-plus是在mybatis基础上进行二次封装的一套orm框架,对mybatis只做增强不做改变,不会对项目中原生mybatis代码产生任何影响,完全兼容mybatis;优点:mybatis-plus只需要做简单的配置,即可快速进行单表CRUD操作,无需编写sql语句;mybatis-plus提供了内置插件,提供分页,逻辑......
  • 解决Mybatisplus中没有Db类静态工具的方案--提高版本
    方案:将两个的版本都提高即可解决Mybatis—plus的依赖文件<dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.5.3</version></dependency>&......
  • MyBatis-Plus-实用的功能自动填充字段
    前言:java项目用到了mybatis-plus,在一些类里面需要在更新时候,统一设置,修改人,修改ID,修改时间。新增时候设置创建人,创建时间等基础类:@DatapublicabstractclassBaseModelimplementsSerializable{/***逻辑删除*/@TableField(value="is_delete",......
  • Asp .Net Core 系列:基于 Castle DynamicProxy + Autofac 实践 AOP 以及实现事务、用户
    目录什么是AOP?.NetCore中有哪些AOP框架?基于CastleDynamicProxy实现AOPIOC中使用CastleDynamicProxy实现事务管理实现用户自动填充什么是AOP?AOP(Aspect-OrientedProgramming,面向切面编程)是一种编程范式,旨在通过将横切关注点(cross-cuttingconcerns)从主要业务逻辑......
  • CesiumJS【Basic】- #053 绘制渐变填充多边形(Entity方式)-使用canvas
    文章目录绘制渐变填充多边形(Entity方式)-使用canvas1目标2代码2.1main.ts绘制渐变填充多边形(Entity方式)-使用canvas1目标使用Entity方式绘制绘制渐变填充多边形-使用canvas2代码2.1main.tsimport*asCesiumfrom'cesium';constviewer......