利用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怎么对字段进行自动填充