介绍场景介绍
自动填充处理器
Mybatis-Plus配置类
配置实体类中相关字段的自动填充策略
这期内容当中小编将会给大家带来有关利用Mybatis-Plus怎么对字段进行自动填充,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。
在阿里开发手册的建表规约中有说明,数据库表中应该都要有create_time, update_time字段;那么在开发中,对于这些共有字段的处理应该要进行统一,这样就可以简化我们的开发过程。那么本文就对Mybatis-Plus中的字段自动填充进行记录。
场景介绍
在项目的数据表设计中,每张表都有create_id, create_time, update_id, update_time这四个字段,那么在Java应用中,针对新增和修改操作要对这四个字段进行相应的更改:
- <李>
create_id, update_id要自动填充为当前登录的用户ID
李> <李>create_time, update_time要自动填充为当前时间
李>下面说说代码实现:
自动填充处理器
需要实现Mybatis-Plus中的MetaObjectHandler接口
import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler; import hw.topevery.basis.runtime.UserRuntime; import org.apache.ibatis.reflection.MetaObject; import org.springframework.stereotype.Component; import java.time.LocalDateTime; import java.util.Objects;/* * ,*更新相关字段处理器 ,* ,* @author whw ,* @date 2020/1/3  16:41 ,*/@ component public class  UpdateRelatedFieldsMetaHandler implements MetaObjectHandler  { ,/* * ,,*,新增操作 ,,* ,,*,@param metaObject ,,*/@Override才能 public 才能;void  insertFill (MetaObject metaObject), { ,,,this.strictInsertFill (metaObject,“createId",, String.class,, getCurrentUserId ()); ,,,this.strictInsertFill (metaObject,“createTime",, LocalDateTime.class,, LocalDateTime.now ()); ,,,this.strictInsertFill (metaObject,“updateId",, String.class,, getCurrentUserId ()); ,,,this.strictInsertFill (metaObject,“updateTime",, LocalDateTime.class,, LocalDateTime.now ()); ,,} ,/* * ,,*,更新操作 ,,* ,,*,@param metaObject ,,*/@Override才能 public 才能;void  updateFill (MetaObject metaObject), { ,,,this.strictUpdateFill (metaObject,“updateId",, String.class,, getCurrentUserId ()); ,,,this.strictUpdateFill (metaObject,“updateTime",, LocalDateTime.class,, LocalDateTime.now ()); ,,} ,/* * ,,*,获取当前登录用户ID ,,* ,,* @return ,,*/private 才能;String  getCurrentUserId (), { ,,,return “当前登录用户ID"; ,,} }
Mybatis-Plus配置类
需要将处理器注入进春容器才会生效
import com.baomidou.mybatisplus.core.config.GlobalConfig; import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor; import hw.topevery.kunming.wapi.handler.UpdateRelatedFieldsMetaHandler; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration;/* * ,* Mybatis-Plus配置类 ,* ,* @author whw ,* @date 2020/1/3  16:41 ,*/@ configuration public class  MybatisPlusConfig { ,@ bean public 才能;GlobalConfig  globalConfig (), { ,,,GlobalConfig GlobalConfig =, new GlobalConfig (); ,,,globalConfig.setMetaObjectHandler (new UpdateRelatedFieldsMetaHandler ()); ,,,return globalConfig; ,,} }
配置实体类中相关字段的自动填充策略
在@TableField注解中设置填补属性
字段填充策略FieldFill说明
值描述违约默认不处理插入插入填充字段更新更新填充字段INSERT_UPDATE插入和更新填充字段import com.baomidou.mybatisplus.annotation.FieldFill; import com.baomidou.mybatisplus.annotation.TableField; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.io.Serializable; import java.time.LocalDateTime;/* * ,*基础实体类 ,* ,* @author whw ,* @date 2020/1/3  17:37 ,*/@ data public class  BaseEntity implements Serializable  { private 才能static final  long serialVersionUID =, 1 l; @ApiModelProperty才能(value =,“创建用户ID") @TableField才能(=value “c_create_id",, fill =, FieldFill.INSERT) private 才能;String  createId; @ApiModelProperty才能(value =,“创建时间“) @TableField才能(=value “c_create_time",, fill =, FieldFill.INSERT) private 才能;LocalDateTime  createTime; @ApiModelProperty才能(value =,“更新用户ID") @TableField才能(=value “c_update_id",, fill =, FieldFill.INSERT_UPDATE) private 才能;String  updateId; null null null null利用Mybatis-Plus怎么对字段进行自动填充