后端学习开发【12】——商品管理开发-实现主键自增及日期自动填充功能

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第4天,点击查看活动详情

前言

通过上一篇文章,我们实现了商品类型的增删改查。但是同时也发现,插入的数据的 ID 是随机生成的,我现在想让 ID 递增;还有一个问题就是,如果我们在插入数据的时候不手动设置 create_time 和 update_time ,那么这两个参数就会为空,现在我想在初次插入数据的时候,将他们自动设置成当前时间,当数据被修改时,将 update_time 自动设置成被修改的时间。

实现

对数据库及后台代码做进一步地改造,首先来看看如何实现主键自增。

1、主键自增

通过使用 mybatis-plus 的 AUTO 自增策略来实现,具体做法有以下两点:

1.1、在创建数据表的时候设置主键自增

image.png

这里需要注意要将主键的类型设置为带 int 的类型,否则下面的自动递增不会出现。

1.2、实体类的 ID 字段中配置 @TableId(type = IdType.AUTO)

@TableId(type = IdType.AUTO)
private Integer id;

1.3、测试结果如下:

image.png

实现了主键自增的功能。

2、自动填充日期

该功能也需要两个步骤。

2.1、在 common 目录下创建 CommonMetaObjectHandler 类

package com.qq.first_project.common;

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

import java.util.Date;

@Component
public class CommonMetaObjectHandler implements MetaObjectHandler {
    /**
     * 插入数据时自动填充createTime和updateTime
     * @param metaObject
     */
    @Override
    public void insertFill(MetaObject metaObject) {
        this.setFieldValByName("createTime", new Date(), metaObject);
        this.setFieldValByName("updateTime", new Date(), metaObject);
    }
    
    /**
     * 修改数据时自动填充updateTime
     * @param metaObject
     */
    @Override
    public void updateFill(MetaObject metaObject) {
    
        this.setFieldValByName("updateTime", new Date(), metaObject);
    }
}

image.png

2.2、配置实体类的 createTime 和 updateTime 字段

/**
 * 创建时间
 * 自动填充
 */
@TableField(fill = FieldFill.INSERT)
private Date createTime;

/**
 * 更新时间
 * 自动填充
 */
@TableField(fill = FieldFill.INSERT_UPDATE)
private Date updateTime;

2.3、测试结果如下

image.png

至此,主键自增及日期自动填充功能就完成了。完结,撒花!!!!

猜你喜欢

转载自juejin.im/post/7126103838083252261
今日推荐