标签搜索

目 录CONTENT

文章目录

MybatisPlus映射对象字段自动填充

陈铭
2023-04-26 / 0 评论 / 0 点赞 / 98 阅读 / 323 字 / 正在检测是否收录...

依赖就不放了,烂大街

映射对象

对需要映射的字段createTime和updateTime,设置上相应注解

package com.rycem.meta.entity.event;

import com.baomidou.mybatisplus.annotation.*;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.Date;

/**
 * @ClassName Event
 * @Description 事件表DTO
 * @Author 陈铭
 * @Date 14:08 2023/4/6
 * @Version 1.0
 **/
@Data
@NoArgsConstructor
@AllArgsConstructor
@TableName("event")
public class Event {

    @TableId(value = "event_id", type = IdType.AUTO)
    private Integer eventId;

    @TableField("app_id")
    private Integer appId;

    @TableField("event_name")
    private String eventName;

    @TableField("alias_name")
    private String aliasName;

    @TableField(value = "create_time", fill = FieldFill.INSERT)
    private Date createTime;

    @TableField(value = "update_time", fill = FieldFill.INSERT_UPDATE)
    private Date updateTime;

}

handler

这里我们根据对象属性名来进行映射

  • 在添加数据时,FieldFill.INSERT会去执行insertFill方法
  • 在更新数据时,FieldFill.INSERT_UPDATEupdateFill方法
package com.rycem.meta.entity;

import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
import org.apache.ibatis.reflection.MetaObject;
import org.springframework.stereotype.Component;

import java.util.Date;

/**
 * DTO日期处理
 **/
@Component
public class DateHandler implements MetaObjectHandler {

    @Override
    public void insertFill(MetaObject metaObject) {
        this.setFieldValByName("createTime", new Date(), metaObject);
        this.setFieldValByName("updateTime", new Date(), metaObject);
    }

    @Override
    public void updateFill(MetaObject metaObject) {
        this.setFieldValByName("updateTime", new Date(), metaObject);
    }
}

使用

这里以更新为例,对event的别名进行更新,当不手动设置updateTime,MybatisPlus能够帮我们更新updateTime字段

    public boolean update(EventUpdateBody body) {
        Event event = get(body.getEventId());
        event.setAliasName(body.getAliasName());
        return this.updateById(event);
    }
0

评论区