一、引言

小编先来解释下自动填充是做什么的,大家有没有在数据入库的时候,不管新增或者修改数据,都要手动来设置添加时间和修改时间。而且每个插入都需要设置,而且数据库还设置不能为空,就很烦恼。

虽然可以在数据库设置默认值,但小编没得数据库表修改权限呐,那就从技术上来解决这个问题吧。

 if (medicalProcedures.isEmpty()) {procedureConverter.setHisname(emrIpdEncounters.get(0).getHisName());// 手动添加值procedureConverter.setCreateTime(new Date());procedureConverter.setUpdateTime(new Date());emrIpdMedicalRecordManage.addMedicalProcedure(procedureConverter);
}

二、自动填充实现

  • 步骤一:在实体类字段上,通过注解方式设置需要在执行什么操作填充,一共有三种:新增、更新、更新和操作
  /*** 创建时间*/@TableField(fill = FieldFill.INSERT)private LocalDateTime createTime;/*** 修改时间*/@TableField(fill = FieldFill.UPDATE)private LocalDateTime updateTime;
  • 步骤二:创建一个新的类,实现MetaObjectHanlder接口,一个新增时填充的方法、一个修改时填充的方法
@Component
public class MyMetaObjectHandler implements MetaObjectHandler {/*** 新增时填充** @param metaObject*/@Overridepublic void insertFill(MetaObject metaObject) {System.out.println("insertFill......");// createTime 对应实体属性名, 第二个参数需要填充的值setInsertFieldValByName("createTime", LocalDateTime.now(), metaObject);}/*** 修改时填充** @param metaObject*/@Overridepublic void updateFill(MetaObject metaObject) {System.out.println("updateFill......");// updateTime 对应实体属性名, 第二个参数需要填充的值setUpdateFieldValByName("updateTime", LocalDateTime.now(), metaObject);}
}

三、自动填充使用细节

  • 细节一:这里的填充是针对整个数据库的新增或者更新,都会执行填充的步骤,像这种创建时间和修改时间数据库全表最好统一列名。

  • 细节二:如果有些数据库的表没有创建时间和修改时间字段,如果在执行这些操作有点浪费,可以这样操作。

   /*** 新增时填充* @param metaObject*/@Overridepublic void insertFill(MetaObject metaObject) {// 先判断是否存在该字段boolean createTime = metaObject.hasSetter("createTime");if (createTime) {System.out.println("insertFill......");setInsertFieldValByName("createTime", LocalDateTime.now(), metaObject);}}
  • 细节三:有时候特殊表的填充字段,需要我们手动来设置值,但最后执行的时候又会被填充覆盖掉,看以下操作。
   /*** 修改时填充** @param metaObject*/@Overridepublic void updateFill(MetaObject metaObject) {// 先判断该值是否为空,为空才填充Object updateTime = getFieldValByName("updateTime", metaObject);if (updateTime == null) {System.out.println("updateFill......");setUpdateFieldValByName("updateTime", LocalDateTime.now(), metaObject);}}
  • 细节四:自动填充功能不仅仅针对创建和修改时间,可根据项目需求所使用。

四、来自小伙伴们的补充

补充一:在使用更新自动填充时,只适用于updateById()来操作,如果平时使用Wrapper其他条件来更新时,是不会自动填充的。

文章转自

MyBatis-Plus 高级功能 —— 自动填充功能相关推荐

  1. excel填充序列_猴哥讲述:excel的自动填充功能——自动填充单元格

    我们都知道excel的自动填充功能非常的好用,自动填充功能可以帮我们在工作中大大的提升工作效率,同时还可以准确无误的帮助我们进行数据自动输入,我们也可以自定义自动填充的序列. 一.自动填充功能,是指我 ...

  2. MyBatis-Plus——自动填充功能实现

    文章目录 MyBatis-Plus--自动填充功能 1.什么是自动填充 2.数据库层面实现 3.编程实现(推荐) MyBatis-Plus--自动填充功能 1.什么是自动填充 有些表中会有更新时间up ...

  3. MyBatis-plus自动填充功能之自动填充时间

    MyBatis-plus自动填充功能之自动填充时间 一.前期工作 二.自动填充 2.1 数据库级别 2.2 代码级别 在实际操作过程中,我们并不希望创建时间.修改时间这些来手动进行,而是希望通过自动化 ...

  4. 【MyBatis-Plus】实现字段自动填充功能

    一.前言 在项目中,我们有一些公共的字段需要做修改 如: gmt_create:创建时间 creator_id:创建人 gmt_modified:修改时间 modifier_id:修改人 这时候我们可 ...

  5. Mybatis-plus的自动填充功能

    1.概述 在我们开发过程中,经常需要做一些插入操作,有些麻烦,特别是对于一些每次插入或修改都需要改变的的一些字段,例如创建时间和修改时间两个字段,和数据没什么关系但是每次修改都需要被动修改这两个字段, ...

  6. 谷歌浏览器自动填充功能怎么开启?自动填充功能开启方法

    为了避免用户在登录同一网站时频频输入账号.密码的现象,谷歌在自家的Chrome浏览器中贴心的加入了"自动填充功能".那么,谷歌浏览器自动填充功能要怎么开启呢?不清楚操作方法的朋友, ...

  7. MySQL实现字段自动填充功能

    根据阿里巴巴开发手册,有这么一句话:所有的数据库表当中必须有gmt_create.gmt_modified,几乎所有的表都要配置上!而且需要自动化!!! 对于创建时间.修改时间这些字段,我们是希望在添 ...

  8. 360 html禁止自动填充,360极速浏览器如何停用“自动填充”功能

    360极速浏览器管理停用"自动填充"功能的方法如下: 1.使用"自动填充选项"对话框添加.编辑或删除已创建的"自动填充"条目. 2.点击地址 ...

  9. EXCEL2016的 ctrl+E 神奇的自动填充功能

    自动填充功能 1 完全不需要写公式 2 原始数据列,边上,新增新的列 3 选择新列的空白地方,按  ctrl + E  很神奇

最新文章

  1. idea 启动时报 error:java 无效的源发行版
  2. python 设置默认字典
  3. PyTorch 官方教程发布,限时免费开放!
  4. 【SpringBoot】查看运行环境中所有的spring bean
  5. R语言-异常数据处理2
  6. css3-12 transition+css或transform实现过渡动画
  7. C++字符串的个人理解
  8. 强烈的打击感jinbiguandan
  9. 数据中心如何选择机柜
  10. silverlight 二级导航
  11. [转载] python中 numpy_Python中的Numpy
  12. 解决Zarp报错,成功运行
  13. java异常的嵌套和级联
  14. cocos creator播放声音控制台显示Simulator: jsb: ERROR
  15. conda SSL错误 SSLError,爬虫应用总结
  16. 实现支持 MJPEG 的播放器
  17. springboot 与rabbitmq集成+生产者投递确认+消费者手动确认+TTL+死信队列+延时队列
  18. 防火墙用户管理和入侵防御简介
  19. oracle dump 文件解析,Oracle 常用的dump(Memory Dumps/File Dumps/Trace 文件使用示例)
  20. Linux教程——Linux桌面环境(桌面系统)大比拼【附带优缺点】

热门文章

  1. 正则化与特征稀疏,过拟合
  2. 004-2-拟合,drop-out
  3. Python老男孩 day15 函数(二) 局部变量与全局变量
  4. Ubuntu下添加定时任务执行php文件
  5. windows下默认以管理员身份运行程序
  6. YTU 2887: D--机器人Bill
  7. struts2 集成webservice 的方法
  8. 【转】十分有用的linux shell学习总结
  9. vi的visual模式
  10. [云炬创业管理笔记]第二章成为创业者讨论1