- 实体类存放公共属性
- 填充类
每次每个表都有创建人,创建时间,修改时间,修改人,而我们在写每个insert或者update方法的时候都要set一遍值,太麻烦了,代码亲测有效,不是坑… 实体类存放公共属性
@Data
public class BaseEntity implements Serializable {
@TableField(value = "create_by", fill = FieldFill.INSERT) // 新增执行
private String createBy;
@TableField(value = "create_time", fill = FieldFill.INSERT)
private Date createTime;
@TableField(value = "update_by", fill = FieldFill.INSERT_UPDATE) // 新增和更新执行
private String updateBy;
@TableField(value = "update_time", fill = FieldFill.INSERT_UPDATE)
private Date updateTime;
@Version
@TableField(value = "version", fill = FieldFill.INSERT, update = "%s+1")
private int version;
@TableLogic(value = "0",delval = "1")
@TableField(value = "del_flag",fill = FieldFill.INSERT)
private int delFlag;
}
填充类
import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
import com.cloud.top.rbac.common.shiro.SessionUtil;
import org.apache.ibatis.reflection.MetaObject;
import org.springframework.stereotype.Component;
import java.util.Date;
@Component
public class MetaHandler implements MetaObjectHandler {
@Override
public void insertFill(MetaObject metaObject) {
this.setFieldValByName("createTime", new Date(), metaObject);
//SessionUtil.getLoginUser().getLoginAccount() 登陆人工号
this.setFieldValByName("createBy", SessionUtil.getLoginUser().getLoginAccount(), metaObject);
this.setFieldValByName("updateTime", new Date(), metaObject);
this.setFieldValByName("updateBy", SessionUtil.getLoginUser().getLoginAccount(), metaObject);
Object version = this.getFieldValByName("version", metaObject);
if (null == version) {
this.setFieldValByName("version", 0L, metaObject);
}
}
@Override
public void updateFill(MetaObject metaObject) {
this.setFieldValByName("updateTime", new Date(), metaObject);
this.setFieldValByName("updateBy", SessionUtil.getLoginUser().getLoginAccount(), metaObject);
}
}



