关于mybatis plus 中 MetaObjectHandler 自动填充功能出现的问题及处理
时间:2020-01-07
本文章向大家介绍关于mybatis plus 中 MetaObjectHandler 自动填充功能出现的问题及处理,主要包括关于mybatis plus 中 MetaObjectHandler 自动填充功能出现的问题及处理使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
1、自动填充的字段:
createdBy,updatedBy,createdDate,updatedDate
/**
* 插入使用
*/
@Override public void insertFill(MetaObject metaObject) { String operator = "bokai"; fillValue(metaObject, CREATED_BY, () -> operator); fillValue(metaObject, UPDATED_BY, () -> operator); fillValue(metaObject, CREATED_DATE, () -> getDateValue(metaObject.getSetterType(CREATED_DATE))); fillValue(metaObject, UPDATED_DATE, () -> getDateValue(metaObject.getSetterType(UPDATED_DATE))); } @Override public void updateFill(MetaObject metaObject) { String operator = "bokai"; fillValue(metaObject, "et."+UPDATED_BY, () -> operator); fillValue(metaObject, "et."+UPDATED_DATE, () -> getDateValue(metaObject.getSetterType("et."+UPDATED_DATE))); } private void fillValue(MetaObject metaObject, String fieldName, Supplier<Object> valueSupplier) { if (!metaObject.hasGetter(fieldName)) { return; } Object sidObj = metaObject.getValue(fieldName); if (sidObj == null && metaObject.hasSetter(fieldName) && valueSupplier != null) { setFieldValByName(fieldName, valueSupplier.get(), metaObject); } } private Object getDateValue(Class<?> setterType) { if (Date.class.equals(setterType)) { return new Date(); } else if (LocalDateTime.class.equals(setterType)) { return LocalDateTime.now(); } return null; }
涉及获取需要更新的createdDate,updatedDate 字段属性的类型
2、insertFill方法和updateFill方法的入参 MetaObject metaObject 中的属性不同
metaObject.getSettreType()获取字段属性类型的Class在 insertFill 和 updateFill 中就不能同样使用了
insertFill中metaObject如下:
updateFill中metaObject如下:
我们去看BaseMapper源码,如下:
可以看出update的语句都有 et
更新时,我们需要使用et.字段名才会生效
原文地址:https://www.cnblogs.com/bokai/p/12161905.html
- HDU-----(1083)Courses(最大匹配)
- HDU----(3294)Girls' research(manacher)
- map
- hdu----(3068)最长回文(manacher)
- hdu---(1280)前m大的数(计数排序)
- 程序员你为什么这么累【续】:编码习惯之Controller规范
- go-nsq使用简述
- hdu---(4515)小Q系列故事——世界上最遥远的距离(模拟题)
- 利用sys schema解决一次诡异的语句hang问题
- hdu----(4513)吉哥系列故事——完美队形II(manacher(最长回文串算法))
- 学习manacher(最长公共回文串算法)
- Apache Spark 2.3 加入支持Native Kubernetes及新特性文档下载
- Oracle 12c 多租户专题|隔离PDB的磁盘IO
- golang 裸写一个pool池控制协程的大小
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释
- .NET Core 对接微信小程序数据解密
- 一篇文章构建你的 NodeJS 知识体系(W字长文)
- 爬取天气数据并解析温度值
- FlutterDojo设计之道—状态管理之路(一)
- 即学即用Kotlin - 协程
- redis学习(三)
- update影响行数使用不当造成的bug
- 基于React+Koa实现一个h5页面可视化编辑器-Dooring
- 使用Spring Boot DevTools优化你的开发体验
- 排序算法——一篇文章搞懂常用的排序算法
- 路径寻优
- Milvus 实战 | 基于 Milvus 的 CORD-19 论文检索引擎
- Laravel 8 新特性和功能优化速览
- Linux 搭建 我的世界(MC) 基岩版服务器
- 虚函数、析构函数、静态函数、多态