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

MyBatisPlus(十九)自动填充

说明

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

实现方式

  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.lryc.cn/news/196120.html

相关文章:

  • 设计模式_命令模式
  • python接口自动化测试(六)-unittest-单个用例管理
  • tomcat 服务器
  • 如果你有一次自驾游的机会,你会如何准备?
  • 关于ts的keyof
  • Go实现CORS(跨域)
  • 第一章:变量和简单的数据类型
  • 【初识Linux】:常见指令(2)
  • “torch.load“中出现的“Unexpected key(s) in state_dict“报错问题
  • 使用dasviewer加载osgb模型,不显示纹理,黑乎乎的怎么解决?
  • Qtday01(qt简介、简单窗口组件)
  • 【SA8295P 源码分析 (一)】41 - SA8295所有镜像位置、拷贝脚本、生成QFIL包 及 Fastboot 下载命令介绍
  • AtCoder abc130
  • 数据库、数据中台、数据仓库、数据湖区别
  • 缺失的数据范围,思维,hduoj
  • 极简的MapReduce实现
  • 更新暑假做过的项目(医学数据多标签分类与多标签分割,医学数据二分类)
  • 谷歌浏览器访问127.0.0.1时报错 Failed to read the ‘sessionStorage‘ property from ‘Window‘
  • 云技术分享 | 快速构建 CodeWhisperer 代码生成服务,让 AI 辅助编程
  • 开发万岳互联网医院APP:技术要点和关键挑战
  • 漫谈下一代防火墙与Web应用防火墙的区别
  • 基于马尔可夫随机场的图像去噪算法matlab仿真
  • 【综合类型第 39 篇】HTTP 状态码详解
  • win10 hosts文件修改不生效
  • 网络库OKHttp(1)流程+拦截器
  • 关于 Invalid bound statement (not found): 错误的解决
  • 深入理解强化学习——智能体的类型:有模型强化学习智能体与免模型强化学习智能体
  • vue项目获得开源代码之后跳过登录界面
  • WPS、Excel表格增加一列,序列1到任意大小 / 填充某个范围的数字到列
  • 在 rider 里用配置 Perforce(P4)的注意事项