我们才使用basemapper插入时,createTime一般是手动new date()这样,但是每次插入时很麻烦,mybatis-plus有提供自动插入,实现主要如下

@Data
@AllArgsConstructor
@NoArgsConstructor
@TableName("sys_user")
public class User implements Serializable {

    @TableId(value = "id",type = IdType.ASSIGN_UUID)
    private String id;

    private String userName;

    private String password;

    private String realName;

    private String phone;

    private String email;
    @TableField(fill = FieldFill.INSERT)
    private Date registerDate;
    @TableField(fill = FieldFill.INSERT)
    private Date lastLoginDate;
    @TableField(fill = FieldFill.INSERT)
    private int loginCount;
    @TableField(fill = FieldFill.INSERT)
    private Date createTime;
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private Date updateTime;
}

使用注解 

@TableField(fill = FieldFill.INSERT) 

新增时生效

@TableField(fill = FieldFill.INSERT_UPDATE)

新增以及修改生效

***光添加注解还不会生效,需要实现MetaObjectHandler的insertFill()方法才能生效,修改则是updateFill方法,生成mybatisplus控制器,注入spring容器

@Component
public class MybatisPlusHandler implements MetaObjectHandler {
    @Override
    public void insertFill(MetaObject metaObject) {
        setFieldIsNullValue(metaObject,"createTime",new Date());
        setFieldIsNullValue(metaObject,"updateTime",new Date());
        setFieldIsNullValue(metaObject,"loginCount",1);
    }

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

    private void setFieldIsNullValue(MetaObject metaObject, String fieldName, Object value) {
        if (metaObject.getValue(fieldName) == null) {
            metaObject.setValue(fieldName, value);
        }
    }

}

完成

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐