【Java那些事】@TableField对字段的自动填充

问题:当你有个对象User时,这个User对象的属性还有类似createTime ,updateTime的属性,每次创建这个对象都要设置createTime ,updateTime,对这个对象User进行操作又要来更新它的updateTime,是不是很麻烦???【O(≧口≦)O每次都要多写几行代码 或者 忘记写了 】 

首先,先创建 “自定义元数据对象处理器”


@Component
public class MyMetaObjectHandler implements MetaObjectHandler {@Overridepublic void insertFill(MetaObject metaObject) {HashMap<String, Object> map = ThreadLocalUtil.get();Long id = (Long) map.get("id");//获得当前用户的idmetaObject.setValue("createTime", LocalDateTime.now());metaObject.setValue("updateTime", LocalDateTime.now());metaObject.setValue("createUser", id);metaObject.setValue("updateUser", id);}@Overridepublic void updateFill(MetaObject metaObject) {HashMap<String, Object> map = ThreadLocalUtil.get();Long id = (Long) map.get("id");metaObject.setValue("updateUser", id);metaObject.setValue("updateTime", LocalDateTime.now());}
}

使用@TableField注解


public class User {private Long id;private String username;private String nickname;@TableField(fill = FieldFill.INSERT)private LocalDateTime createTime;@TableField(fill = FieldFill.INSERT)private LocalDateTime createUser;@TableField(fill = FieldFill.INSERT_UPDATE)private LocalDateTime updateTime;@TableField(fill = FieldFill.INSERT_UPDATE)private LocalDateTime updateUser;
}

 

@TableField 是MyBatis Plus提供的一个注解,用于标识实体类中的字段与数据库表中的字段之间的映射关系

以下是 @TableField 注解的一些常用属性及其说明:

  1. value:指定字段在数据库表中的列名。当实体类中的字段名与数据库表的列名不一致时,可以通过这个属性来映射。
  2. exist:指定字段是否为数据库表中的字段,默认值为 true,表示存在对应的数据库字段。
  3. fill:指定字段为自动填充字段,可选值有 FieldFill.DEFAULTFieldFill.INSERTFieldFill.UPDATE 等,用于控制字段在插入或更新时的自动填充策略。
  4. select:指定字段在查询时是否进行查询,默认为 true,即默认情况下会查询该字段。
  5. condition:指定字段在更新操作时的条件,默认为空字符串,即不指定特定条件。
  6. update:用于预处理 set 字段自定义注入,可以定义更新时字段的计算表达式。例如,如果设置了 update="%s+1",那么在更新时会将字段值加1。

使用 @TableField 注解可以灵活地控制实体类与数据库表之间的映射关系,以及字段的各种操作行为,使得ORM(对象关系映射)更加符合业务需求。

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

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

相关文章

静态住宅IP代理VS动态住宅IP代理,该如何选择?

在网络安全和数据采集领域&#xff0c;代理服务已经成为一个必不可少的工具。在IP代理服务中&#xff0c;静态住宅代理和动态住宅代理是两种常见的代理类型。今天就为大家详细介绍静态住宅代理与动态住宅代理的差异。 首先我们来看什么是静态住宅IP&#xff0c;这种IP地址可以被…

硅酸盐玻璃反应离子刻蚀在光学微系统的应用前景

引言 微光学元件和复杂光学微系统需要超精密制造工艺。最大容许粗糙度由所用波长λ的分数定义&#xff0c;例如λ或更好&#xff0c;而元件的整体尺寸和形状可以容易地达到毫米或厘米范围。在RIE过程中&#xff0c;材料传输是通过离子和反应气体与等离子体反应器表面的物理和化…

Spring Boot项目中的ASCII艺术字

佛祖保佑&#xff1a; ${spring-boot.formatted-version} ———————————————————————————————————————————————————————————————————— // _ooOoo_ …

贪心算法-活动选择问题背包问题

目录 活动选择问题 无重叠区间-Leetcode 435 分数背包问题--贪心解法 贪心法 0-1 背包问题 贪心法 贪心算法的局限 Set cover problem 活动选择问题 分析: /* 要在一个会议室举办n个活动 - 每个活动有它们各自的起始和结束时间 - 找出在时间上互不冲突的活动组合,能…

分享爱,分享精彩瞬间,分享5款实用软件

分享爱&#xff0c;分享时光&#xff0c;分享精彩瞬间&#xff0c;大家好&#xff0c;我是互联网的搬运工&#xff0c;今天继续给大家带来几款好用的软件。 1. 数据分析——Chartistic ​ Chartistic是一款功能强大的数据分析可视化工具&#xff0c;它提供了丰富的图表类型和…

C语言操作符和关键字

文章目录 操作符单目操作符sizeof&#xff08;类型&#xff09;强制类型转换 关系操作符、逻辑操作符、条件操作符逗号表达式 常见关键字typedefstaticstatic修饰局部变量static修饰全局变量static修饰函数 register寄存器关键词define定义常量和宏 操作符 单目操作符 C语言中…

Vue入门到关门之指令系统

一、引入 在 Vue.js 中&#xff0c;指令&#xff08;Directives&#xff09;是一种特殊的标记&#xff0c;用于向 Vue 实例提供特殊的行为。指令以 v- 开头&#xff0c;例如 v-if、v-for 等。 指令的本质就是语法糖&#xff0c;标志位。在编译阶段 render 函数里&#xff0c;…

R-Tree原理及实现代码

目录 一.引言 二.R-Tree的基本原理 插入操作 查询操作 删除操作 平衡操作 三. 节点分裂 线性分裂 二次分裂 增量分裂 四.查询 范围查询 最近邻查询 五.最新研究进展 六.C语言实现示例 七. 实际案例分析 八.总结 一.引言 在计算机科学领域&#xff0c;R-Tree是…

基于 Spring Boot 博客系统开发(一)

基于 Spring Boot 博客系统开发&#xff08;一&#xff09; 本系统是简易的个人博客系统开发&#xff0c;为了更加熟练地掌握SprIng Boot 框架及相关技术的使用。&#x1f913;&#x1f913;&#x1f913; 基于 Spring Boot 博客系统开发&#xff08;二&#xff09;&#x1f4…

聊聊.NET Core处理全局异常有那些方法

简述 处理全局异常的方法有IExceptionFilter&#xff08;异常处理&#xff09;&#xff0c;使用中间件异常处理&#xff0c;使用框架自带异常中间件等。考点 考察对异常处理方式的熟悉程度和广度&#xff0c;以及对中间件、过滤器熟练程度。 下面分别具体介绍三种处理异常的…

Spring Cloud学习笔记(Feigh):简介,实战简单样例

这是本人学习的总结&#xff0c;主要学习资料如下 - 马士兵教育 1、Netflix Feign简介2、Open Feign的简单样例2.1、dependency2.2、代码样例 1、Netflix Feign简介 Netfilx Feign是用来帮助发送远程服务的&#xff0c;它让开发者觉得调用远程服务就像是调用本地方法一样&…

数字化转型之路:企业信息化建设的关键步骤

随着科技的不断发展和应用&#xff0c;企业数字化转型热已过&#xff0c;浪正汹&#xff0c;不得不成为当今商业领域的必由之路。然而&#xff0c;数字化转型不仅仅是简单地引入一些新技术或软件&#xff0c;而是一场全面的变革&#xff0c;涉及到组织文化、业务流程、技术基础…

mysql数据库开发军规

MySQL数据库开发军规是一系列最佳实践和原则&#xff0c;旨在帮助开发者在MySQL数据库设计和开发过程中提升性能、确保数据安全、减少错误&#xff0c;并提高可维护性。以下是一些关键的MySQL开发军规&#xff1a; 核心军规&#xff1a; 避免在数据库中进行复杂运算&#xff…

计算机系列之进程调度、死锁、存储管理、设备管理、文件管理

11、进程调度-死锁-存储管理-固定分页分段 1、进程调度 进程调度方式是指当有更高优先级的进程到来时如何分配CPU。分为可剥夺和不可剥夺两种&#xff0c;可剥夺指当有更高优先级进程到来时&#xff0c;强行将正在运行进程的CPU分配给高优先级进程&#xff1b;不可剥夺是指高…

分享一些常用的内外网文件传输工具

内外网隔离后的文件传输是网络安全领域中一个常见而又重要的问题。随着信息技术的快速发展&#xff0c;网络安全问题日益凸显&#xff0c;内外网隔离成为了许多企业和组织保护内部信息安全的重要手段。然而&#xff0c;内外网隔离后如何有效地进行文件传输&#xff0c;成为了摆…

专利视角下的量子竞赛:《2024全球专利格局白皮书》

2024年1月&#xff0c;欧洲量子产业联盟&#xff08;QuIC&#xff09;发布了题为《全球量子技术专利格局描述》的综合白皮书。 该文件以透明的视角展示了当今的知识产权格局&#xff0c;包括知识产权持有人的地理分布。该文件由 QuIC 知识产权&#xff08;IP&#xff09;与贸易…

3DTiles特性与内容解析

一篇19年整理的比较老的笔记了。更多精彩内容尽在数字孪生平台。 瓦片种类 3DTiles瓦片有多种类型&#xff1a; b3dm(Batched 3D Model&#xff0c;批量3D模型) b3dm瓦片存储了多个个体&#xff0c;b3dm中的glb代表的实际对象应该具有相同的种类但是可能数据内容不同。b3dm…

ABAP开发:SAPscript表单设计及打印简介

在SAP ERP系统应用中&#xff0c;通常利用Forms表单来定制诸如发票、支票及标签之类的特殊文档的打印格式。这些Forms用来描述文档页面中的信息结构&#xff0c;比如地址抬头、item行、页脚等等&#xff0c;Forms设计就是要确定这些文档的输出格式。 利用SAPscript工具进行Form…

html+css 选择器优先级

1.基本选择器优先级 id>class>tagname(标签选择器)>*(通配符选择器) <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>基本选择器的优先级</title><style type"text/css"…

行列视平台的应用

行列视自助式生产报表系统是一个功能强大的数据分析和报表生成工具。它提供了简单易用的界面和丰富的功能&#xff0c;帮助用户从海量数据中提取洞察&#xff0c;并生成定制化的报表。 该系统具有直观的操作界面&#xff0c;无论您是数据分析专家还是初学者&#xff0c;都能轻…