字段填充策略FieldFill
值 | 解释 |
---|---|
DEFAULT | 默认不处理 |
INSERT | 插入时自动填充 |
UPDATE | 更新时自动填充 |
INSERT_UPDATE | 插入和更新时自动填充 |
实体类
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Project implements Serializable {
private static final long serialVersionUID = 666539098716282294L;
...
/**
* 开始时间
*/
@TableField(fill = FieldFill.INSERT)
private Date startTime;
/**
* 更新时间
*/
@TableField(fill = FieldFill.INSERT_UPDATE)
private Date updateTime;
}
在上面程序中,通过对startTime字段添加注解@TableField(fill = FieldFill.INSERT),可以实现在进行插入(insert)操作时对该字段进行自动填充;通过对updateTime字段添加注解 @TableField(fill = FieldFill.INSERT_UPDATE),可以实现在进行插入(insert)和更新(update)操作时对该字段进行自动填充;
==注意:只有上面是不能实现自动填充的,我们还需要实现包com.baomidou.mybatisplus.core.handlers下的一个接口MetaObjectHandler==
自动填充处理类(没有这一步数据库不会自动插入)
代码如下(示例):
@Component
public class MyMetaObjectHandler implements MetaObjectHandler {
@Override
public void insertFill(MetaObject metaObject) {
this.setFieldValByName("startTime", new Date(),metaObject);
this.setFieldValByName("updateTime", new Date(),metaObject);
}
@Override
public void updateFill(MetaObject metaObject) {
this.setFieldValByName("updateTime", new Date(),metaObject);
}
}
这样我们在具体业务中对实体类进行赋值就可以不用对这些公共字段进行赋值,在执行插入或者更新时就能自动赋值并插入数据库