Mybatis Plus 3.2版本自动填充失效

it2025-10-12  10

Mybatis Plus 3.2版本自动填充失效

package com.ccssoft.ngbip.dcbim.common.base.entity; import com.baomidou.mybatisplus.annotation.*; import com.baomidou.mybatisplus.extension.activerecord.Model; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import org.springframework.format.annotation.DateTimeFormat; import java.time.LocalDateTime; /** * @description: 实体基类 * @author: laiqi * @created: 2020-09-30 16:13 */ @Data public abstract class BaseEntity<T extends Model<?>> extends Model<T> { /** * 主键 */ @ApiModelProperty("主键") @TableId(type = IdType.AUTO) private Integer id; /** * 是否有效,1->有效,0->无效 */ @ApiModelProperty(value = "是否有效") @TableLogic private Integer isValid; /** * 创建时间 */ @ApiModelProperty("创建时间") @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") @TableField(fill = FieldFill.INSERT) private LocalDateTime createTime; /** * 修改时间 */ @ApiModelProperty("修改时间") @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") @TableField(fill = FieldFill.UPDATE) private LocalDateTime modifyTime; /** * 操作人 */ @ApiModelProperty("操作人") @TableField(fill = FieldFill.INSERT_UPDATE) private Long operator; /** * 备注 */ @ApiModelProperty("备注") private String remark; /** * 获取当前会话对象 * * @return */ }

解决方法:

package com.ccssoft.ngbip.dcbim.common.handler; import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler; import com.baomidou.mybatisplus.core.toolkit.Constants; import com.ccssoft.ngbip.dcbim.common.base.entity.BaseEntity; import com.ccssoft.ngbip.dcbim.common.util.MyCommonUtil; import org.apache.ibatis.reflection.MetaObject; import org.springframework.stereotype.Component; import java.time.LocalDateTime; /** * <p> * 基础属性自动填充功能 * TODO 用官方的例子走不通;跟踪源码发现实际参数维护的是et对象,该对象为实体对象 * </p> * * @author laiqi * @since 2020-10-22 09:41 */ @Component public class BaseFieldMetaObjectHandler implements MetaObjectHandler { @Override public void insertFill(MetaObject metaObject) { Object entityObj = this.getFieldValByName(Constants.ENTITY, metaObject); if(entityObj instanceof BaseEntity) { ((BaseEntity<?>) entityObj).setCreateTime(LocalDateTime.now()); ((BaseEntity<?>) entityObj).setOperator(MyCommonUtil.getCurrentUserId()); this.setFieldValByName(Constants.ENTITY, entityObj, metaObject); } } @Override public void updateFill(MetaObject metaObject) { Object entityObj = this.getFieldValByName(Constants.ENTITY, metaObject); if(entityObj instanceof BaseEntity) { ((BaseEntity<?>) entityObj).setModifyTime(LocalDateTime.now()); ((BaseEntity<?>) entityObj).setOperator(MyCommonUtil.getCurrentUserId()); this.setFieldValByName(Constants.ENTITY, entityObj, metaObject); } } }
最新回复(0)