携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第4天,点击查看活动详情
前言
通过上一篇文章,我们实现了商品类型的增删改查。但是同时也发现,插入的数据的 ID 是随机生成的,我现在想让 ID 递增;还有一个问题就是,如果我们在插入数据的时候不手动设置 create_time 和 update_time ,那么这两个参数就会为空,现在我想在初次插入数据的时候,将他们自动设置成当前时间,当数据被修改时,将 update_time 自动设置成被修改的时间。
实现
对数据库及后台代码做进一步地改造,首先来看看如何实现主键自增。
1、主键自增
通过使用 mybatis-plus 的 AUTO 自增策略来实现,具体做法有以下两点:
1.1、在创建数据表的时候设置主键自增
这里需要注意要将主键的类型设置为带 int 的类型,否则下面的自动递增不会出现。
1.2、实体类的 ID 字段中配置 @TableId(type = IdType.AUTO)
@TableId(type = IdType.AUTO)
private Integer id;
1.3、测试结果如下:
实现了主键自增的功能。
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);
}
}
2.2、配置实体类的 createTime 和 updateTime 字段
/**
* 创建时间
* 自动填充
*/
@TableField(fill = FieldFill.INSERT)
private Date createTime;
/**
* 更新时间
* 自动填充
*/
@TableField(fill = FieldFill.INSERT_UPDATE)
private Date updateTime;
2.3、测试结果如下
至此,主键自增及日期自动填充功能就完成了。完结,撒花!!!!