MyBatisPlus中使用 @TableField完成字段自动填充
在java实体类中
@TableField(fill = FieldFill.INSERT)
private String createBy;
@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
@TableField(fill = FieldFill.INSERT)
private Date createTime;
//0:删除 1:有效,逻辑删除(伪删)
@TableLogic(value = "1",delval = "0")
public Integer isFlag;
编写控制器:MybatisPlusMetaObjectHandler(自动填充器)
实现com.baomidou.mybatisplus.core.handlers.MetaObjectHandler接口,该接口为元对象字段填充控制器抽象类,实现公共字段自动写入。
这里需要手动配置一些需要默认值的字段名称
package lc.tool;
import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import org.apache.ibatis.reflection.MetaObject;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.Date;
/**
* 自动填充器
* @description: 为相关空值属性提供默认值
* @author: lc
* @time: 2020/11/24 16:10
*/
@Component
public class MybatisPlusMetaObjectHandler implements MetaObjectHandler {
@Resource
private HttpServletRequest request;
@Resource
private HttpServletResponse response;
/**
* 默认值,新增情景
* @Author lc
* @Description //TODO
* @Date 2020/12/18 16:40
* @Param [metaObject]
* @return void
*/
@Override
public void insertFill(MetaObject metaObject) {
String token = request.getHeader("token");
if (StringUtils.isNotEmpty(token)){
Long id = (Long) JwtUtil.getObjectByKey(response,token,"id");
this.setFieldValByName("createUserId", id,metaObject);
}
this.setFieldValByName("createDate", new Date(),metaObject);
this.setFieldValByName("updateDate", new Date(),metaObject);
}
/**
* 默认值,更新情景
* @Author lc
* @Description //TODO
* @Date 2020/12/18 16:41
* @Param [metaObject]
* @return void
*/
@Override
public void updateFill(MetaObject metaObject) {
this.setFieldValByName("updateDate", new Date(),metaObject);
String token = request.getHeader("token");
if (StringUtils.isNotEmpty(token)){
Long id = (Long) JwtUtil.getObjectByKey(response,token,"id");
this.setFieldValByName("updateUserId", id,metaObject);
}
}
}
这样当某字段为空时,在增改数据库的时候,会添加该字段的默认值。