MyBatis-Plus中自动填充功能失效如何解决

  介绍

本篇文章给大家分享的是有关MyBatis-Plus中自动填充功能失效如何解决,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

1:先检查字段有没有加上注解@TableField(填补=FieldFill.INSERT_UPDATE)

@TableField (=fill  FieldFill.INSERT_UPDATE)   ,private  Date  updatedTime;

2:有没有实现MetaObjectHandler接口,并且加入到春容器中

@ component   public  class  MyMetaObjectHandler  implements  MetaObjectHandler  {   ,   ,@Override   ,public  void  insertFill (MetaObject  metaObject), {   this.strictInsertFill (metaObject,“createdTime",, Date.class,, new 日期());   this.strictInsertFill (metaObject,“updatedTime",, Date.class,, new 日期());   ,}   ,   ,@Override   ,public  void  updateFill (MetaObject  metaObject), {   this.strictUpdateFill (metaObject,“updatedTime",, Date.class,, new 日期());   ,}   }

3: @ component是否扫码注入进去

4: baseMapper.update (null,包装。你们;Users> lambdaUpdate())这样的写法是没有拦截到的,所以无效

xml写的也无效

@update注解也无效

baseMapper.update (null,,包装。你们;Users> lambdaUpdate ()   这里(用户::getConcernType, 2)   .eq(用户:getId userId));

应该改为

baseMapper.update(用户,,包装。你们;Users> lambdaUpdate ()   这里(用户::getConcernType, 2));

或者

Users  Users =, new 用户();   users.setId (userId);   users.setConcernType (1);   baseMapper.updateById(用户),

 MyBatis-Plus中自动填充功能失效如何解决

这样可以拿到表相关信息,会执行我们的MetaObjectHandler实现接口

<强>补充:SpringBoot + MyBatisPlus公共字段自动填充MybatisPlusConfig配置不生效解决

SpringBoot + MyBatisPlus MybatisPlusConfig配置不生效问题

先说下工程目录

 MyBatis-Plus中自动填充功能失效如何解决

典型的Maven工程,在共同中配置MyBatisPlus配置信息,在基地中进行CRUD操作。

遇到的问题:

在MyBatisPlus中配置了公共字段(create_time upate_time),想在插入数据时,自动插入这两条字段。

配置如下:

AbstractEntity代码:

/* *   ,*实体父类   ,*/@ data   public  abstract  class  AbstractEntity  extends  Model  implements  Serializable  {   ,private  static  final  long  serialVersionUID =, 1 l;/* *   *,才能ID   ,*/,@TableId   ,private  String  id;/* *   *,才能创建时间   ,*/,@DateTimeFormat (=pattern “yyyy-MM-dd  HH: mm: ss")=,@JsonFormat (timezone “GMT + 8“,, pattern =,“yyyy-MM-dd  HH: mm: ss")=,@TableField (value “create_time",, fill =, FieldFill.INSERT)   ,public  Date  createTime;/* *   *,才能修改时间   ,*/,@DateTimeFormat (=pattern “yyyy-MM-dd  HH: mm: ss")=,@JsonFormat (timezone “GMT + 8“,, pattern =,“yyyy-MM-dd  HH: mm: ss")=,@TableField (value “update_time",, fill =, FieldFill.UPDATE)   ,public  Date  updateTime;   }

MetaHandler代码:

@Slf4j   @ component   public  class  MetaHandler  implements  MetaObjectHandler  {/* *   *,才能新增数据执行   *,才能@param  metaObject   ,*/,@Override   ,public  void  insertFill (MetaObject  metaObject), {   this.setFieldValByName才能(“createTime",, new (),日期,metaObject);   this.setFieldValByName才能(“updateTime",, new (),日期,metaObject);   ,}/* *   *,才能更新数据执行   *,才能@param  metaObject   ,*/,@Override   ,public  void  updateFill (MetaObject  metaObject), {   this.setFieldValByName才能(“updateTime",, new (),日期,metaObject);   ,}   }

MybatisPlusConfig代码:

@ configuration   @MapperScan (“com.lyf.account。* * .mapper")   public  class  MybatisPlusConfig  {   ,/*   *,才能分页插件,自动识别数据库类型   *,才能多租户,请参考官网【插件扩展】   ,*/,@ bean   ,public  PaginationInterceptor  paginationInterceptor (), {   return 才能;new  PaginationInterceptor ();   ,}   ,@ bean   ,public  GlobalConfig  globalConfig (), {   GlobalConfig 才能;GlobalConfig =, new  GlobalConfig ();   globalConfig.setMetaObjectHandler才能(new  MetaHandler ());   return 才能;globalConfig;   ,}   }

MyBatis-Plus中自动填充功能失效如何解决