介绍
本篇文章给大家分享的是有关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(用户),
这样可以拿到表相关信息,会执行我们的MetaObjectHandler实现接口
<强>补充:SpringBoot + MyBatisPlus公共字段自动填充MybatisPlusConfig配置不生效解决强>
SpringBoot + MyBatisPlus MybatisPlusConfig配置不生效问题
先说下工程目录
典型的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中自动填充功能失效如何解决