mybatisplus 自动填充策略
新增和修改的时候,每次都要重新对象set createTime、updateTime、syncTime等 这些都是公用的所以利用mybatisplus 自动填充策略 可以减轻一些操作
上代码!
/**
* @author sya
* @Date 2021/11/12 0012 15:50
*/
@Component
public class MyMetaObjectHandler implements MetaObjectHandler {
private static final String CREATE_TIME = "createTime";
private static final String SYNC_TIME = "syncTime";
private static final String UPDATE_TIME = "updateTime";
/**
* 新增时触发
* @param metaObject
*/
@Override
public void insertFill(MetaObject metaObject) {
operationFill(metaObject, CREATE_TIME);
}
/**
* 修改时触发
* @param metaObject
*/
@Override
public void updateFill(MetaObject metaObject) {
operationFill(metaObject, UPDATE_TIME);
}
private void operationFill(MetaObject metaObject, String updateTime) {
if (metaObject.hasGetter(updateTime) && StringUtil.isNullorEmpty(this.getFieldValByName(updateTime, metaObject))) {
this.setFieldValByName(updateTime, DateTimeUI.getCurrentDateTime(), metaObject);
}
if (metaObject.hasGetter(SYNC_TIME) && StringUtil.isNullorEmpty(this.getFieldValByName(SYNC_TIME, metaObject))) {
this.setFieldValByName(SYNC_TIME, DateTimeUI.getCurrentDateTimeLong(), metaObject);
}
}
}
必须在实体类加上 @TableField注解
@TableField(fill = FieldFill.INSERT)
private String createTime;
@ApiModelProperty(value = "修改时间")
@TableField(fill = FieldFill.UPDATE)
private String updateTime;
@ApiModelProperty(value = "时间戳")
@TableField(fill = FieldFill.INSERT_UPDATE)
private String syncTime;
这样就做新增和修改操作的时候就不在需要set啦!