@TableField注解

SpringBoot - @TableName / @TableField / @TableId 注解使用详解 主要讲解@TableName / @TableField / @TableId 注解在实际工作中的使用。 阅读详情

@TableField 是 MyBatis-Plus 框架提供的注解,用于自定义实体类字段与数据库表字段的映射关系。

@TableField(
    value = "column_name",           // 数据库字段名
    exist = true,                    // 是否为数据库字段(默认true)
    fill = FieldFill.DEFAULT,        // 自动填充策略
    select = true,                   // 是否参与查询(默认true)
    update = "%s+1",                 // 自定义更新条件,this is 更新时自增
    condition = SqlCondition.EQUAL,  // where条件比较方式
    jdbcType = JdbcType.UNDEFINED,   // JDBC类型
    typeHandler = UnknownTypeHandler.class,  // 类型处理器
    insertStrategy = FieldStrategy.DEFAULT,   // 插入策略
    updateStrategy = FieldStrategy.DEFAULT,   // 更新策略
    whereStrategy = FieldStrategy.DEFAULT,    // where条件策略
    keepGlobalFormat = false,        // 是否保持全局format
    numericScale = ""                // 小数位数(保留精度)
)
private String username;

常见应用场景:

场景 1:字段名映射(最常用)

@Data
public class User {
    private Long id;
    
    // 数据库字段名为 user_name,实体类为 username
    @TableField(value = "user_name")
    private String username;
    
    // 数据库字段名为 create_time,驼峰命名自动映射也可,但显式指定更清晰
    @TableField("create_time")
    private LocalDateTime createTime;
}

场景 2:排除非表字段

@Data
public class User {
    private Long id;
    private String name;
    
    // 该字段仅用于业务计算,数据库表中没有
    @TableField(exist = false)
    private BigDecimal tempBonus;
    
    // 前端查询条件,不存入数据库
    @TableField(exist = false)
    private String keyword;
}

场景 3:自动填充(审计字段)

@Data
public class BaseEntity {
    
    @TableField(value = "create_time", fill = FieldFill.INSERT)
    private LocalDateTime createTime;
    
    @TableField(value = "update_time", fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime updateTime;
    
    @TableField(value = "create_by", fill = FieldFill.INSERT)
    private Long createBy;
    
    @TableField(value = "update_by", fill = FieldFill.INSERT_UPDATE)
    private Long updateBy;
}

场景 4:查询时排除敏感字段

@Data
public class User {
    private Long id;
    private String username;
    
    // 密码字段:查询时不返回,但插入/更新时参与
    @TableField(select = false)
    private String password;
    
    // 手机号:查询时脱敏处理(配合 typeHandler)
    @TableField(typeHandler = MaskPhoneTypeHandler.class)
    private String phone;
}

"查询时脱敏"是一种数据安全保护机制,指在从数据库查询数据时,自动将敏感信息(如手机号、身份证号、银行卡号等)转换为掩码形式,防止完整信息泄露。

例子:

场景 5:自定义更新逻辑

@Data
public class Product {
    private Long id;
    
    // 乐观锁:更新时 version = version + 1
    @TableField(update = "%s+1")
    private Integer version;
    
    // 库存扣减:更新时 stock = stock - #{stock}
    @TableField(update = "stock - #{stock}")
    private Integer stock;
}

javaType应用场景:

@Data
public class User {
    private String name;
    
    // 明确告诉 MyBatis:这个 Integer 对应数据库的 INTEGER 类型
    @TableField(jdbcType = JdbcType.INTEGER)
    private Integer age;
    
    @TableField(jdbcType = JdbcType.VARCHAR)
    private String email;
}

常用属性速查:

AutoSAR配置与实践(深入篇)5.4 OS原理(下 )- 内存保护(MPU) ECU可能由内部模块、第三方模块等各模块集成的。需求对每个模块所定义的安全等级可能有差异,需要考虑不同安全等级的模块和代码间减少相互干扰,防止程序错误传播。可以理解为包含Task、Alarm、Counter、Schedule table、ISRs、Event等基本对象的容器,用于隔离Task/Alarm等,进行内存保护。 阅读详情

相关推荐

自学篇--使用keil5.23创建一个stm32工程并编译(固件包自带版本)

之前在本科学习阶段学习过一点51单片机的知识,可是因为基本没有实践过几次现在已经完全忘记了。。前几天老师突然丢给我几个板子说让我把程序编译、烧写环境装好,当时我就震惊了,不过经过三四天的自我摸索,之后参考他人的学习经验,现在已经基本能处理这个问题了,所以为了方便后面的学者,主要也是为了把自己这几天的学习成果记录一下,我在这里把这个过程写下来。(因为刚刚接触,很多原理性的东西都还不懂,只是一个操作步

yang_csdnForOBTS的博客 8659

@TableField注解详解

本文介绍了@TableField注解详解。

努力是为了让自己不平庸。。。 3万+

基于STM32的工业I/O模块硬件电路实现

深入解析基于STM32的工业I/O模块硬件电路实现,涵盖关键电路设计与信号处理,突出硬件电路稳定性和工业级可靠性,适合嵌入式开发者参考。

weixin_35835018的博客 453

注解@TableName、@TableField

目录 @TableName(value = …) 当数据库名与实体类名不一致或不符合驼峰命名时,需要在此注解指定表名(不加这个注解默认将实体类的小写形式在db中寻找) @TableField 字段注解,该注解用于标识非主键的字段。将数据库列与 JavaBean 中的属性进行映射 @TableId(type = …) 指定实体类的属性为对应的主键,主要有以下几种: // 数据库ID自增 IdType.AUTO // 该类型为未设置主键类型(默认) IdType.NONE /** * 用户输入ID

guochaoHNU的博客 3万+

无法找到来自源 nvlddmkm 的事件 ID 14 的描述

具体错误是: 无法找到来自源 nvlddmkm 的事件 ID 14 的描述。本地计算机上未安装引发此事件的组件,或者安装已损坏。可以安装或修复本地计算机上的组件。 出现这样错误的原因有很多了,有可能是硬件有可能是软件。由于我是刚配置的电脑,起初非常怀疑是自己组装的问题,折腾了好久,心态爆炸!!!先说我报这样错误的情况,以及解决办法,供后面人参考。 ...

SeventhBlue 6万+

ORB-SLAM3复现的详细过程——配置安装及ROS和脚本运行---Ubuntu20.04

所提供的图像具有高动态范围,事先进行了光度标定,用20Hz的帧率采集,分辨率为1024像素*1024像素;需要下载数据集dataset-room1_512_16和rgbd_dataset_freiburg1_desk。在一键安装ROS后,只需要再安装Pangolin即可,其他所有的需要都已经存在。用微型飞行器采集的视觉惯性数据集,包含双目相机和IMU同步测量数据及位姿的真值。第二条命令中的${ROS_PACKAGE_PATH}是自己文件的路径。其采用的相机和IMU传感器,在硬件上进行了时间同步。

琉璃轻纱的博客 1万+

@TableField注解:深入理解与应用

MyBatis-Plus(简称MP)是一个MyBatis的增强工具,旨在简化开发、提高效率。它提供了许多便捷的功能,如代码生成、分页插件、性能分析插件等,使得开发者可以更专注于业务逻辑的实现,而不必过多关注底层的数据库操作。注解是MyBatis-Plus提供的一个注解,用于标识实体类字段与数据库表字段的映射关系。通过注解,可以指定字段的名称、是否为数据库字段、是否为主键、是否为逻辑删除字段等属性,从而实现更灵活的数据库操作。

xycxycooo的博客 8426

YOLOv11-Pose部署RK3588实战:人体姿态识别精度翻倍,边缘推理速度突破瓶颈

本教程从YOLOv11-pose模型的姿态识别训练,到RK3588的边缘量化部署,为你打造了一套“高精度+高实时性+低成本”的人体姿态分析解决方案。无论是健身动作纠正、智能安防行为检测,还是工业人员姿态监控,这套技术都能直接复用——你只需替换数据集与业务逻辑,即可快速落地专属的边缘AI姿态识别系统。如果你在实践中遇到任何卡点,欢迎随时交流。记住,人体姿态识别的价值在于“关键点准、推理快、部署易”,而这三者的平衡,正是你通过本教程能掌握的核心能力。

m0_64661770的博客 138

@TableName 、@TableId、@TableField、MyBatis-Plus 字段类型处理器TypeHandler

mybatisplus已经提供了FastJson、Gson和JackSon的json转java对象的AbstractJsonTypeHandler的实现类;//json从数据库中取出转换成对象private 实体类 xxx;

Little_Arya的博客 9215

Claude Code 100个真实案例 - 用AI设计Arduino PCB电路板(硬件小白也能画板)

本案例展示如何使用 Claude Code 配合 KiCad 的 Python 脚本接口,从零设计一块 Arduino 传感器扩展板 PCB。从原理图符号创建、网表生成到 PCB 布局布线,全程自动化完成,最终输出可直接发给工厂打样的 Gerber 文件。

yueyeguzhuo的专栏 438

华为OD机试真题 新系统 2026-04-26 Python&JS 实现【最大化游戏试玩资格分发】

新研发了一台游戏设备可以面向用户接受试玩。现有 n 个试玩申请,每个试玩有开始时间和结束时间。作为协调员,为了能让更多人体验到游戏,你需要对试玩申请进行选择,使得:

MISAYAONE的博客 289

MyBatisPlus的@TableField注解基本使用

在MP中通过@TableField注解可以指定字段的一些属性,常见解决的问题有2种:1、对象中的属性名和字段名不一致的问题(非驼峰)2、对象中的属性字段在表中不存在的问题上述的两种情况,我们接下来一一举例说明我们最长见的,应该就是下面这种@TableField的使用方式了,是的,没错,就是在实体里面标注这个属性是数据库表里面的某个字段,采用驼峰命名法的方式以上就是MyBatisPlus中的@TableField注解基本使用,后续如果发现更多使用技巧,会及时回来更新。......

见证自己学习,成长的记录 1万+

域适应分类:MCD论文笔记——Maximum Classifier Discrepancy for Unsupervised Domain Adaptation

域适应分类:MCD论文笔记——Maximum Classifier Discrepancy for Unsupervised Domain Adaptation

qq_50001789的博客 1005

@JsonInclude注解与@TableField注解的使用

@JsonInclude @JsonInclude的使用场景 在前后分离项目中 返回JSON 数据中 因为有分级情况的存在 对应的级层中 使数据如果它为空的时候 我不需要这个字段的返回 但是它不为空的时候 我要用得到 这个注解就完美的解决了这个问题·· ···· @JsonInclude的使用 实体类中使用 属于com.fasterxml.jackson.annotation.JsonInclude; 注解中的源码 public Include value() default Inclu

Yur__的博客 2244

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

MybatisPlus中@TableField注解的使用详解

MybatisPlus中@TableField注解的使用详解 实现 官方文档说明: com.baomidou.mybatisplus.annotations.TableField TableField注解新增属性 update 预处理 set 字段自定义注入 (讲解:比如我们使用mybatisplus自带的insert()方法向数据库插入数据时,假设我们给age字段赋值为1,但是我们在age字段上的@TableField注解里面加了update=“%s+1”,那么真真插入到数据库的值就是age=2,而不是

qq_43842093的博客 2万+

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

深入了解:MybatisPlus中@TableField注解的使用

TableField是MybatisPlus提供的一个注解,用于标识实体类中的属性与数据库表字段的映射关系。通过@TableField注解,我们可以灵活地指定属性对应的数据库表字段名,以及配置一些其他属性的特性,比如是否为主键、是否为插入字段、是否为更新字段等。@TableField注解是MybatisPlus中一个非常有用的注解,它能够帮助我们更灵活地映射数据库表字段和实体类属性。通过合理地使用@TableField注解,我们可以提高开发效率,并且减少出错的可能性。

牛肉胡辣汤 1万+

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

[java][MyBatisPlus]@TableField:字段注解

MyBatis-Plus中的@TableField注解用于映射实体类字段与数据库表字段的关系。当字段名不一致时,通过value属性指定对应列名。该注解还支持配置字段操作行为(insert/update/select)、填充策略(自动填充时间等)和字段策略(忽略空值等)。对于枚举类型,可使用enumValue属性进行特殊处理。合理使用@TableField能提升代码可读性,避免字段映射错误,是MyBatis-Plus实体类映射的重要工具。

一名不太专业的程序员 3732

MyBatis Plus注解 @TableField

摘要:@TableField是MyBatis-Plus的核心注解,用于映射实体类字段与数据库表列的关系。主要功能包括:通过value属性设置字段与列的映射关系;exist属性控制字段是否对应数据库列;fill属性实现自动填充策略。还提供FieldStrategy策略配置,包括IGNORED、NOT_NULL、NOT_EMPTY等5种策略,通过insertStrategy、updateStrategy、whereStrategy属性分别控制插入、更新、查询操作时的字段处理逻辑。支持全局和局部策略配置,注解配置

qq_53844452的博客 903

Mybatis plus注解@TableField详解

@TableField 字段注解,该注解用于标识非主键的字段。将数据库列与 JavaBean 中的属性进行映射。

抓娃攻城师 3835

mybatis plus框架的@TableField注解不生效问题总结

一、问题描述 最近遇到一个mybatis plus的问题,@TableField注解不生效,导致查出来的字段反序列化后为空 数据库表结构: CREATE TABLE `client_role` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '自增主键', `name` varchar(64) NOT NULL COMMENT '角色的唯一标识', `desc` varchar(64) DEFAULT NULL COMMENT '角色描述',

HongYu012的博客 2万+

Java杂记:@TableField注解用法详解

@TableField注解用法详解

孙悟空 3478

注解 @TableField 的使用笔记

在使用 MyBatis-Plus 进行数据库操作时,我们可以通过 @TableField 注解来指定实体类中的字段与数据库表中的字段之间的映射关系。@TableId注解:MyBatisPlus在实现CRUD默认会将Id作为主键,在插入数据时,使用雪花算法生成Id,如果主键不叫Id则添加功能会失败。@TableField 是一个注解,用于标识实体类中的字段映射关系。上述代码中,userName 字段与数据库表字段 user_name 进行映射,而 age 字段并不是数据库表字段。

yunyala的博客 3429

Mybatis-plus中的@TableId以及@TableField注解的作用

@TableId:它对应的是将数据的主键进行映射,在调用mybatis-plus中的一些根据主键id进行操作的方法,如果没有这个注解,就会导致方法无法找到主键,使得方法所要进行的操作无效。 @TableField:映射数据库中的其他普通字段,其注解中有一个属性exist,如果将其设置为false,则默认这个属性不经过数据库字段的映射。 ...

weixin_47383768的博客 2751

@TableField(exist=false)注解

@TableField(exist=false)注解加在bean属性上,表示当前属性不是数据库的字段,但在项目中必须使用。 @ApiModelProperty(position = 12, value = "注销时间") private LocalDateTime zxsj; /** * 开始时间 */ @TableField(exist = false) @ApiModelPropert...

盐焗味的小星球的博客 2万+

关于 @Transient 注解和@TableField 的使用

在 JPA(Java Persistence API)中,@Transient注解用于指示某个字段不需要持久化到数据库中。当一个字段被标记为@Transient时,JPA 实现会忽略该字段,不会将其保存到数据库。举个例子,假设我们有一个User实体类,其中包含了一个名为的字段,但这个字段不需要被持久化到数据库中,可以这样使用@Transient在这个例子中,字段使用了@Transient注解,因此它不会被持久化到数据库中。注意只有第一个依赖包的。

qq_63431773的博客 1363

@TableField注解的使用

@TableField注解的使用

19.2.04.157N的博客 871
上一篇: 关于数组方面Java和C++的对比
下一篇: 权限设计模式
fqq3
博客等级 码龄4年 114粉丝 45原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值