mybatisPlus数据字段填充

这里用到的时实体类User

import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;import java.io.Serializable;
import java.time.LocalDateTime;
import java.util.Date;@Data
@TableName("user")
public class User implements Serializable {private Long id;private String username;private String password;private String phone;private String email;private String address;private Integer status;//设置插入数据时,该字段数据自动填@TableField(fill = FieldFill.INSERT)private Date createTime;//设置向修改表中数据时  该字段字段填充@TableField(fill = FieldFill.UPDATE)private Date updateTime;/*** 在此处设置逻辑删除是局部的,指针对当前表* 设置使用isDeleted属性对应的字段实现逻辑删除* value:设置未删除的值* delval:设置已删除的值*/// @TableLogic(value = "0", delval = "1") //逻辑删除private Integer isDeleted;private Integer isAdmin;
}

要想上面的TableField(fill=FieldFill.INSERT)和 TableField(fill=Fieldll.UPDATE)这两个注解有效,需要实现MetaObjectHandler接口

import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
import lombok.extern.slf4j.Slf4j;
import org.apache.ibatis.javassist.util.proxy.MethodHandler;
import org.apache.ibatis.reflection.MetaObject;
import org.springframework.stereotype.Component;import java.lang.reflect.Method;
import java.util.Date;
import java.util.function.Supplier;@Component
@Slf4j
public class FillDateHandler implements MetaObjectHandler {/*** 插入时要执行的方法** @param metaObject*/@Overridepublic void insertFill(MetaObject metaObject) {log.info("执行--------------》insertFill");//向指定字段填充数据    参数1元数据     参数2:字段名(属性值)  参数3:填充的字段   参数4:填充字段的类型this.strictInsertFill(metaObject, "createTime", new Supplier<Date>() {@Overridepublic Date get() {return new Date();}}, Date.class);}/*** 修改时要执行的方法** @param metaObject*/@Overridepublic void updateFill(MetaObject metaObject) {log.info("执行--------------》updateFill");//向指定字段填充数据    参数1元数据     参数2:字段名(属性值)  参数3:填充的字段   参数4:填充字段的类型this.strictInsertFill(metaObject, "updateTime", new Supplier<Date>() {@Overridepublic Date get() {return new Date();}}, Date.class);}
}

下面为测试方法:这里没有设置创建的时间

   @Testvoid addUser(){User user = new User();user.setUsername("rzq");user.setPassword("123456");user.setPhone("12345679812");user.setEmail("1234567981@qq.com");user.setAddress("陕西省西安市");  userService.save(user);}

看运行结果

 上述运行结果明显的在编译的时候,创建时间已经加上去;下面看修改,看是否也是能把修改时间加上去,看测试方法:

运行结果:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/825003.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

揭秘Arthas:如何轻松查看入参的命令

哈喽&#xff0c;大家好&#xff0c;我是木头左&#xff01; 大家好&#xff0c;我是你们的博主。今天我要和大家分享一个非常实用的技术技巧&#xff0c;那就是如何使用Arthas来查看入参的命令。我相信这个技巧对于那些想要提升自己Java开发技能的程序员来说&#xff0c;一定是…

压缩感知的概述梳理(1)

参考文献 An efficient visually meaningful image compression and encryption scheme based on compressive sensing and dynamic LSB embedding 基本内容 基本关系梳理 压缩感知核心元素 信号 x 长度&#xff1a;N动态稀疏或可用变换表示&#xff1a;x &#x1d74d;s …

如何将低分辨率的视频变高清,使用AI工具分辨率画质增强至1080P、4K或者8K(附工具)

环境&#xff1a; Topaz Video AI 5.0 问题描述&#xff1a; 如何将低分辨率的视频变高清&#xff0c;使用AI工具分辨率画质增强至1080P、4K或者8K 原视频 增强1080P 解决方案&#xff1a; 1.打开软件&#xff0c;导入要处理的视频&#xff08;工具在本文最后附上&#xf…

C 排序算法

冒泡排序 冒泡排序&#xff08;英语&#xff1a;Bubble Sort&#xff09;是一种简单的排序算法。它重复地走访过要排序的数列&#xff0c;一次比较两个元素&#xff0c;如果他们的顺序&#xff08;如从大到小、首字母从A到Z&#xff09;错误就把他们交换过来。 过程演示&…

数据一致性和事务一致性是两个不同的问题

Paxos、Raft和Zab都是用于解决分布式系统中的数据一致性问题的算法或协议。 2PC和3PC则是用于保证分布式系统中的事务一致性问题的协议。 在分布式系统中&#xff0c;数据一致性和事务一致性是两个不同的问题。但是&#xff0c;为了解决分布式系统中的数据一致性问题&#xf…

智慧城市同城V4-v2.7.1源码全开源

智慧城市同城V4-2.7.1修复更新记录 修复家政服务者页面进入服务项目详情时错误的问题 修复服务商分账业务员和分销商身份重叠时无法分账的问题 修复团购商品商户自负营销设置时无效的问题 修复购物车下单时可能导致订单无商户的问题 修复家政服务项目列表搜索后不显示项目…

学习笔记------时序约束之时钟周期约束

本文摘自《VIVADO从此开始》高亚军 主时钟周期约束 主时钟&#xff0c;即从FPGA的全局时钟引脚进入的时钟或者由高速收发器输出的时钟。 对于时钟约束&#xff0c;有三个要素描述&#xff1a;时钟源&#xff0c;占空比和时钟周期。 单端时钟输入 这里我们新建一个工程&#x…

芯片灌封胶是什么?有哪些优点?

芯片灌封胶是什么&#xff1f;有哪些优点&#xff1f; 芯片灌封胶是一种液态复合物&#xff0c;通过机械或手工方式精准灌入装有电子元件、线路的器件内&#xff0c;在常温或加热条件下固化成为性能优异的热固性高分子绝缘材料。它广泛应用于电子元器件的粘接、密封、灌封和涂…

微信小程序自定义导航栏定位及胶囊按钮图解

在自定义小程序导航栏时&#xff0c;右上角的胶囊&#xff08;MenuButton&#xff09;在不同机型测试&#xff0c;会发现很难适配。 实测中 不同的手机&#xff0c;胶囊高度不一样、状态栏高度不一样。与模拟器显示的情况是不一样的。 由于小程序在不同的手机上顶部布局会发生…

解锁数据潜能:构建高效数据仓库的策略与实践

在数字化时代&#xff0c;数据已成为企业最宝贵的资产之一。然而&#xff0c;随着数据量的激增&#xff0c;企业面临着数据管理的诸多挑战。如何有效地利用这些数据&#xff0c;支持企业的决策和运营&#xff0c;成为每个企业都需要解答的问题。数据仓库的建设和数据的合理分层…

B1100 校庆

输入样例&#xff1a; 5 372928196906118710 610481197806202213 440684198612150417 13072819571002001X 150702193604190912 6 530125197901260019 150702193604190912 220221196701020034 610481197806202213 440684198612150417 370205198709275042 输出样例&#xff1a;…

牛油宝:小牛电动车的贴心管家,为您的骑行保驾护航!

在这个快节奏的时代&#xff0c;越来越多的人选择电动自行车和电摩作为日常出行的交通工具。作为小牛电动车的忠实用户&#xff0c;我深知骑行过程中的安全和保养的重要性。为了给大家带来更好的骑行体验&#xff0c;我今天要向大家推荐一款神奇的“黑科技”——牛油宝&#xf…

Edge的使用心得与深度探索

Microsoft Edge 是微软推出的一款网页浏览器&#xff0c;基于 Chromium 开源项目开发。从 2020 年开始&#xff0c;Edge 浏览器经历了一次重大更新&#xff0c;采用了与 Google Chrome 相同的浏览器引擎&#xff0c;这使得它在性能、兼容性和扩展支持方面都得到了显著改善。以下…

LInux shell编程之基础语法

目录 1、shell概述 1.1、查看Linux 提供的 Shell 解析器 1.2、bash 和 sh 的关系 1.3、查看系统&#xff08;centos&#xff09;默认使用的解释器 2、脚本的基础使用 2.1、脚本的格式 2.2、脚本的执行方式 方式一&#xff1a;采用 bash / sh 脚本的相对路径或绝对路径…

Intel性能分析工具Vtune安装和使用简介

一、介绍 Intel Vtune profiler是用于串行和多线程应用程序的性能分析工具&#xff0c;可以帮助软件开发人员对应用程序的性能问题进行分析&#xff0c;支持包括linux和windows在内的多种操作系统。主要功能包括&#xff1a; 性能分析&#xff1a;可以对应用程序进行深入的性…

单片机入门还能从51开始吗?

选择从51单片机开始入门还是直接学习基于ARM核或RISC核的单片机&#xff0c;取决于学习目标、项目需求以及个人兴趣。每种单片机都有其特定的优势和应用场景&#xff0c;了解它们的特点可以帮助你做出更合适的选择。 首先&#xff0c;我们说一下51单片机的优势&#xff1a; 成熟…

前端调用存储过程很慢,但是在数据库执行很快,解决方案

原因&#xff1a;选项可以指示 SQL Server 每次执行存储过程时都复用上一次编译的执行计划 。 有时候存储过程的执行计划会因为参数值的不同而产生变化 , 存储过程的执行计划会被缓存&#xff0c;如果存储过程的执行计划过多且占用了大量内存&#xff0c;可能会导致内存压力增加…

网络安全:绕过 MSF 的一次渗透测试

这次渗透的主站是 一个 Discuz!3.4 的搭建 违法招 piao 网站&#xff0c; 配置有宝塔 WAF 用 Discuz!ML 3.X 的漏洞进行攻击&#xff0c;但是没有成功 发现主站外链会有一个发卡网&#xff0c;引导人们来这充值&#xff0c;是 某某发卡网&#xff0c;而且域名指向也是主站的 ip…

数据库服务的运行与登录

打开数据库服务 数据库服务: SQL Server(MSSQLServer) 运行在服务器端的应用程序, 提供数据的存储 / 处理和事务等在使用DBMS的客户端之前必须首先打开该服务 客户端连接到服务器 关于客户端 / 服务器端的说明 客户端 : 数据库管理系统(DBMS), 应用程序服务器端 : 安装的数据…