MyBatis-plus 实现通用字段统一处理

183 阅读1分钟

最后更新时间字段

拿 lastUpdateTime 字段举例,我们在增加和修改的时候都要对它进行修改为当前时间,如果我们每一次操作都要写代码的话,显得冗余,那么我们就可以用 mybatis-plus 来解决这一问题

首先找到你想要统一处理的字段进行如下处理

@ApiModelProperty(value = "最后更新时间")
// fill = FieldFill.INSERT_UPDATE 表示修改和插入时候可以自动填充
@TableField(fill = FieldFill.INSERT_UPDATE) 
private LocalDateTime lastUpdateTime;

然后增加一个工具类

import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
import org.apache.ibatis.reflection.MetaObject;
import org.springframework.stereotype.Component;
import java.time.LocalDateTime;

/**
 * 通用字段处理
 */
@Component
public class GeneralMetaObjectHandler implements MetaObjectHandler {


	@Override
	public void insertFill(MetaObject metaObject) {
		try {
			setFieldValByName("lastUpdateTime",LocalDateTime.now(),metaObject);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	@Override
	public void updateFill(MetaObject metaObject) {
		insertFill(metaObject);
	}

}

逻辑删除字段

可以使用 @TableLogic 注解来实现,使用了这个注解后,执行 BaseMapper 的删除方法时候,执行的是 update 操作

添加注解方式

    /**
     * value: 默认的原值
     * delval: 删除后的值
     */
    @TableLogic(value = "0",delval = "1")
    private Integer isDeleted;