当前位置: 首页 > news >正文

【亲测有效】MybatisPlus中MetaObjectHandler自动填充字段失效

MybatisPlus中MetaObjectHandler自动填充字段失效问题

首先如下配置是最基础的, 本文解决的是失效问题, 如下基础配置不再赘述 !

MetaObjectHandler类

注意: MetaObjectHandler类不加@Component注解在config类中使用@Bean注解也可

//@Component
public class FillHandler implements MetaObjectHandler {@Overridepublic void insertFill(MetaObject metaObject) {this.strictInsertFill(metaObject, "createTime", Date.class, new Date());}@Overridepublic void updateFill(MetaObject metaObject) {this.strictUpdateFill(metaObject, "updateTime", Date.class, new Date());}
}

公共字段实体类(其他实体类继承即可)

@Data
public class BaseEntity {@TableId(type = IdType.AUTO)private Long id;//配置插入的时候自动填充create_time@TableField(value = "create_time", fill = FieldFill.INSERT)private Date createTime;//配置更新的时候自动填充create_time@TableField(value = "update_time", fill = FieldFill.INSERT_UPDATE)private Date updateTime;
}

发现问题

MybatisPlus中MetaObjectHandler自动填充字段失效, 并且打断点到FillHandler中, 没有进入调试, 说明FillHandler压根没有注入到mybatis-plus中

在这里插入图片描述

解决问题

修改MybatisPlusConfig类中配置具体如下图所示
在这里插入图片描述
我的配置类代码如下, 按照自己项目的配置略微修改即可, 仅供参考

@Configuration
@MapperScan(value = {"com.lnsoft.sdhxgk.heartbeat.mapper", "com.lnsoft.sdhxgk.**.mapper"})
@RequiredArgsConstructor
public class MybatisPlusConfig {private final MybatisPlusProperties properties;@Bean@Primary@ConfigurationProperties("spring.datasource")public DataSource dataSource(){DataSource datasource = new DruidDataSource();return datasource;}@Bean@Primarypublic SqlSessionFactory sqlSessionFactory(DataSource dataSource) throws Exception {MybatisSqlSessionFactoryBean factory = new MybatisSqlSessionFactoryBean();if (!ObjectUtils.isEmpty(this.properties.resolveMapperLocations())) {factory.setMapperLocations(this.properties.resolveMapperLocations());}MybatisConfiguration configuration = this.properties.getConfiguration();if (configuration == null && !StringUtils.hasText(this.properties.getConfigLocation())) {configuration = new MybatisConfiguration();}factory.setConfiguration(configuration);factory.setVfs(SpringBootVFS.class);GlobalConfig globalConfig = this.properties.getGlobalConfig();globalConfig.setMetaObjectHandler(new FillHandler());factory.setGlobalConfig(globalConfig);factory.setDataSource(dataSource);return factory.getObject();}@Beanpublic MetaObjectHandler metaObjectHandler() {return new FillHandler();}@Bean@Primarypublic DataSourceTransactionManager dataSourceTransactionManager(DataSource dataSource){return new DataSourceTransactionManager(dataSource);}@Beanpublic MybatisPlusInterceptor mybatisPlusInterceptor() {MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();// 分页插件interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));// 乐观锁插件interceptor.addInnerInterceptor(new OptimisticLockerInnerInterceptor());return interceptor;}
}

再次启动项目, 自动填充功能生效 !

相关文章:

  • 【cv学习笔记】YOLO系列笔记
  • 树莓派5 ubuntu 24.04 docker配置镜像Docker pull时报错:https://registry-1.docker.io/v2/
  • 海外广告投放|FB IG 速推帖子有效吗?
  • 测试过程中有哪些风险?
  • 3.4_1 流量控制、可靠传输与滑动窗口机制
  • 【Spring AI 1.0.0】Spring AI 1.0.0框架快速入门(2)——提示词
  • 简述Python里面search和match的区别
  • 【富士康租赁德克萨斯州工厂以扩大AI服务器产能】
  • Java并发编程实战 Day 20:响应式编程与并发
  • Windows 下安装 NVM
  • Mitsubishi GX Works3 / GOT3 的惡意工程混淆邏輯注入攻擊
  • Kratos 与Golang Cms的关系
  • 工具+服务双驱动:创客匠人打造中医IP差异化竞争力
  • Python 100个常用函数全面解析
  • firebase异常捕获
  • ChatGPT革命升级!o3-pro模型重磅发布:开启AI推理新纪元
  • Python Day49
  • 【QT】QVariant 转换为自定义的枚举类型
  • 关于联咏(Novatek )自动曝光中Lv值的计算方式实现猜想
  • 5 Android系统常用debug方法
  • 深圳最大的手机市场在什么地方/一个网站的seo优化有哪些
  • 卖域名的网站要怎么做/百度投诉中心24人工客服
  • 搜中文找不到公司网站是怎么回事/南宁正规的seo费用
  • 做鞋子批发网站/aso平台
  • 有关网站开发的文献/开封网络推广哪家好
  • 国家认可提升学历正规机构/广安网站seo