如何春天在引导中利用Mybatis +自动填充字段

  介绍

这篇文章将为大家详细讲解有关如何春天在引导中利用Mybatis +自动填充字段,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

加入依赖

下面就通过Mybatis +来完成字段自动填充,首先加入Mybatis +依赖:

& lt; dependency>   ,,,& lt; groupId> com.baomidou   ,,,& lt; artifactId> mybatis-plus-boot-starter   ,,,& lt; version> 3.4.1   & lt;/dependency>

创建实体类,添加填充注解

创建一个实体类,然后在需要自动填充的属性上加注解<代码> @TableField(填补=FieldFill.INSERT) ,<代码> @TableField(填补=FieldFill.INSERT_UPDATE) 等注解。

@ data   @TableName (“user")   public  class  UserEntity  extends  BaseEntity  {   ,,,private  static  final  long  serialVersionUID =, 1 l;   ,,,/* *   ,,,,*,主键   ,,,*/,,,@TableId (=value “id",, type =, IdType.ASSIGN_ID)   ,,,private  Long  id;   ,,,/* *   ,,,,*,姓名   ,,,*/,,,@TableField (“name")   ,,,private  String 名称;   ,,,/* *   ,,,,*,年龄   ,,,*/,,,@TableField (“age")   ,,,private  Integer 年龄;   ,,,/* *   ,,,,*,邮件   ,,,*/,,,@TableField (“email")   ,,,private  String 电子邮件;   ,,,/* *   ,,,,*,创建时间   ,,,*/,,,@TableField (=value “create_time",, fill =, FieldFill.INSERT)   ,,,public  Date  createTime;   ,,,/* *   ,,,,*,修改时间   ,,,*/,,,@TableField (=value “modify_time",, fill =, FieldFill.INSERT_UPDATE)   ,,,public  Date  modifyTime;   }

其中填补属性为字段自动填充策略,可选的参数如下所示:

public  enum  FieldFill  {   ,,,/* *   ,,,,*,默认不处理   ,,,*/,,,默认情况下,   ,,,/* *   ,,,,*,插入填充字段   ,,,*/,,,插入,   ,,,/* *   ,,,,*,更新填充字段   ,,,*/,,,更新   ,,,/* *   ,,,,*,插入和更新填充字段   ,,,*/,,INSERT_UPDATE   }

就直接创建一个映射器,来便于测试:

@Mapper   public  interface  UserMapper  extends  BaseMapper< UserEntity>, {   }

实现元对象处理器接口

MyBatis +版本不同,实现方式可能会有些许不同,在3.4.1版本是实现MetaObjectHandler接口,低版本可能是继承MetaObjectHandler抽象类,来实现对应的方法。

下面为实现插入和更新数据的字段填充逻辑,在插入对象时,对创建时间<代码> createTime> modifyTime> modifyTime 修改为最新时间。

@ component   public  class  CommonMetaObjectHandler  implements  MetaObjectHandler  {   ,,,/* *   ,,,,*,创建时间   ,,,*/,,,private  static  final  String  FIELD_SYS_CREATE_TIME =,“createTime";   ,,,/* *   ,,,,*,修改时间   ,,,*/,,,private  static  final  String  FIELD_SYS_MODIFIED_TIME =,“modifyTime";   ,   ,,,/* *   ,,,,*,插入元对象字段填充(用于插入时对公共字段的填充)   ,,,,   ,,,,*,@param  metaObject 元对象   ,,,*/,,@Override   ,,,public  void  insertFill (MetaObject  metaObject), {   ,,,,,,,Date  currentDate =, new 日期();   ,,,,,,,//,插入创建时间   ,,,,,,,if  (metaObject.hasSetter (FIELD_SYS_CREATE_TIME)), {   ,,,,,,,,,,,this.strictInsertFill (FIELD_SYS_CREATE_TIME, metaObject,还以为,Date.class, currentDate);   ,,,,,,,}   ,,,,,,,//,同时设置修改时间为当前插入时间   ,,,,,,,if  (metaObject.hasSetter (FIELD_SYS_MODIFIED_TIME)), {   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null

如何春天在引导中利用Mybatis +自动填充字段