MyBatisPlus(十九)自动填充

news/2025/2/12 17:48:19/

说明

自动填充指的是,当数据被 插入 或者 更新 的时候,会为指定字段进行一些默认的数据填充
比如,插入时,会自动填充数据的创建时间更新时间;更新时,会自动填充数据的更新时间

实现方式

  1. 配置处理器
  2. 为字段添加填充注解

处理器:用来说明,在插入和更新时,为哪些字段设置什么样的值

填充注解:用来说明,实体中的哪些字段开启自动填充。如果实体字段上没有添加注解,是不会自动填充的,即使字段名在处理器中设置了也不会生效。

填充注解的示例:@TableField(fill = FieldFill.INSERT)

在这里插入图片描述

代码

处理器

package com.example.core.config;import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
import org.apache.ibatis.reflection.MetaObject;
import org.springframework.stereotype.Component;import java.util.Date;@Component
public class MyMetaObjectHandler implements MetaObjectHandler {@Overridepublic void insertFill(MetaObject metaObject) {Date date = new Date();this.strictInsertFill(metaObject, "createTime", () -> date, Date.class); // 起始版本 3.3.3(推荐)this.strictUpdateFill(metaObject, "updateTime", () -> date, Date.class); // 起始版本 3.3.3(推荐)}@Overridepublic void updateFill(MetaObject metaObject) {this.strictUpdateFill(metaObject, "updateTime", Date::new, Date.class); // 起始版本 3.3.3(推荐)}}

填充注解

package com.example.web.entity;import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
import com.example.web.enumeration.GenderEnum;
import lombok.Data;import java.util.Date;
import java.util.List;@Data
@TableName(autoResultMap = true)
public class User {private Long id;private String name;private Integer age;private String email;private Integer deleted;private GenderEnum gender;@TableField(typeHandler = JacksonTypeHandler.class)private List<Integer> tags;@TableField(typeHandler = JacksonTypeHandler.class)private List<Contact> contacts;/*** 创建时间*/@TableField(fill = FieldFill.INSERT)private Date createTime;/*** 更新时间*/@TableField(fill = FieldFill.INSERT_UPDATE)private Date updateTime;}

数据库模式

在这里插入图片描述

测试

代码

    /*** 插入用户*/@Testpublic void insert() {User user = new User();user.setId(15L);user.setName("吴一");user.setAge(29);user.setEmail("wuyi@example.com");user.setGender(GenderEnum.MALE);mapper.insert(user);}/*** 更新用户*/@Testpublic void update() {User user = new User();user.setId(15L);user.setAge(30);mapper.updateById(user);}/*** 查询用户*/@Testpublic void selectById() {User user = mapper.selectById(15L);log.info("user:{}", user);}

插入数据

在这里插入图片描述

在这里插入图片描述

更新数据

在这里插入图片描述

在这里插入图片描述

查询数据

在这里插入图片描述


http://www.ppmy.cn/news/1157862.html

相关文章

design compiler之设计环境

design compiler之设计环境 设计环境是什么&#xff1f;设计环境的具体形式操作条件在深亚微米工艺下的一些特殊情况系统接口特性写在最后 设计环境是什么&#xff1f; 在综合之前我们需要定义实际设计所处的环境&#xff0c;从结果导向的角度来讲&#xff0c;设计环境定义的越…

Bugku sql注入 基于布尔的SQL盲注 经典题where information过滤

目录 绕过空格 /**/绕过 ()绕过 回车绕过 &#xff08;键按钮&#xff09;绕过 等号绕过 绕过&#xff0c;&#xff08;逗号&#xff09;使用substr 下面存在基本绕过方式 注释符绕过 /**/绕过 #绕过 /*注释内容*/绕过 //注释绕过 大小写绕过 绕过information过…

第六章 应用层 | 计算机网络(谢希仁 第八版)

文章目录 第六章 应用层6.1 域名系统DNS6.1.1 域名系统概述6.1.2 互联网的域名结构6.1.3 域名服务器 6.2 文件传送协议6.2.1 FTP概述6.2.2 FTP的基本工作原理6.2.3 简单文件传送协议TFTP 6.3 远程终端协议TELNET6.4 万维网www6.4.1 万维网概述6.4.2 统一资源定位符URL6.4.3 超文…

UE5蓝图-事件、函数、事件分发器

UE5蓝图中的事件、函数、事件分发器理解及学习 1 事件 蓝图的事件在事件图表中。 事件可以进行自定义。 1.1 首先自定义一个事件HelloUE 1.2 为事件指定具体的执行体 1.3 运行事件 1.4 绑定事件到 Actor被点击 先进行事件绑定&#xff0c;绑定完成后&#xff0c;BBBB被点击…

ESP32-IPS彩屏ST7789-Arduino-简单驱动

目的&#xff1a; 使ESP32能够驱动点亮ST7789显示屏 前提条件&#xff1a; ESP32 ST7789 &#xff08;240 x240&#xff0c;IPS&#xff09; 杜邦线 Arduino 过程&#xff1a; 0x00--接线 0x01--驱动&#xff1a; 彩屏驱动库 针对不同的彩屏驱动芯片&#xff0c;常用的 Arduino…

SpringBoot--手写组件动态更新@Value的值

原文网址&#xff1a;SpringBoot--手写组件动态更新Value的值_IT利刃出鞘的博客-CSDN博客 简介 本文手写组件&#xff0c;动态更新SpringBoot里Value的值&#xff08;无需重启服务&#xff09;。 不是可以用RefreshScope吗&#xff1f;为什么要手写组件&#xff1f; 动态更…

DataBinding使用报错

val dataBinding DataBindingUtil.setContentView<ActivityMainBinding>(this,R.layout.activity_main)报错一&#xff1a; Unresolved reference: ActivityMainBinding 首先你要知道一个概念&#xff0c;ActivityMainBinding是DataBinding中的一种视频绑定&#xff…

入门小白拥有服务器的建议

学习网络知识 当我们拥有了一台服务器以后,需要提前准备学习一些网络、服务器、互联网方便的知识, 以备在后续学习工作中使用。 建议的网络知识学习清单: 1. 网络基础知识:包括网络拓扑结构、协议、IP地址、子网掩码、网关等基础概念。 2. 网络安全:包括网络攻击类型、防…