栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

MybatisPlus 插件自动维护更新和创建时间

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

MybatisPlus 插件自动维护更新和创建时间

为什么要自动去维护这两个时间

在实际开发中基本上每张表中都有这两个类型的字段,创建时间和修改时间。是为了保证数据的可追溯性,当然肯定还是有操作日志记录表用来做追溯记录。开发中每一次的创建更新都需要手动去设置这一次操作的时间,会有很多的代码冗余。创建时间还好,只是在创建的时候去维护但是更新时间并不能通过DB去维护,MybatisPlus为我们提供了MetaObjectHandler 接口

面我们使用整个接口进行操作 先准备一下两个实体类

这个我们继承了一下 公共字段 PublicField

@Data
@TableName("sys_log")
public class SysLog extends PublicField implements Serializable {

    private static final long serialVersionUID = 1L;


    
    private String ip;

    
    private Integer runType;
    
    private Integer logType;
    
    private Integer whereType;
    
    private String userName;

    
    private String description;

    
    private String actionMethod;

    private String actionUrl;

    
    private String params;

    
    private String browser;

    
    private String classPath;

    
    private String requestMethod;

    
    private String startTime;

    
    private String finishTime;

    
    private Long consumingTime;

    
    private String exDesc;

    
    private String exDetail;

    
    private String tenantDatakey;

    
    private String location;

    
    private String os;

    
    public Integer status;
    
    private String returnData;

}

公共字段类:

@Data
public class PublicField {

    @TableId(value = "id" ,type = IdType.AUTO)
    @ApiModelProperty(value = "ID")
    private Integer id;
    
    @ApiModelProperty(value = "创建时间")
    @TableField(value = "create_date",fill = FieldFill.INSERT)
    private Date createDate;

    
    @ApiModelProperty(value = "修改时间")
    @TableField(value ="update_date" ,fill= FieldFill.INSERT_UPDATE)
    private Date updateDate;
}
下面我们配置一下
@Component
@Slf4j
public class MybatisPlusBaseHandler implements MetaObjectHandler {
    //重写一下insertFill方法 在插入时进行时间的自动维护
    @Override
    public void insertFill(MetaObject metaObject) {
        log.info("新增更新时间-------------------------");
        this.strictInsertFill(metaObject,"createDate", Date.class,new Date());
        this.strictUpdateFill(metaObject,"updateDate",Date.class,new Date());
    }
    // 修改操作是进行时间的维护
    @Override
    public void updateFill(MetaObject metaObject) {
        log.info("修改更新时间-------------------------");
        this.strictUpdateFill(metaObject,"updateDate",Date.class,new Date());
    }
}

测试插入一条记录

输出结果:

@Test
public void inserint(){
    SysLog sysLog = new SysLog();
    sysLog.setId(2555);
    sysLog.setDescription("测试修改时间能不能自动更新");
    iLogServicel.updateById(sysLog);
}

输出结果:

在DB中也可以看到修改时间已经更新(因为创建的时候修改时间和创建时间是样的现在 修改时间已经更新)

最后我贴一下我的maven


    com.baomidou
    mybatis-plus-boot-starter
    3.3.2

感兴趣的可以去试试!!!

实践是检验真理的唯一方法! 明天见殺殺殺

暑期编程PK赛 得CSDN机械键盘等精美礼品!
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1016528.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号