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

MyBatis-Plus实战指南:从核心原理到生产环境最佳实践 在Java后端开发中,ORM框架是连接应用与数据库的关键技术层,它通过对象关系映射简化了数据访问操作。MyBatis作为一款半自动化的ORM框架,通过XML或注解配置SQL,提供了灵活的SQL定制能力,但其在基础CRUD操作上存在重复编码的问题。MyBatis-Plus(苞米豆)作为MyBatis的增强工具,其核心原理在于通过内置通用Mapper、类型安全的Lambda条件构造器以及代码生成器,实现了单表操作的自动化,显著提升了开发效率。这一技术价值在于将开发者从繁琐的样板代码中解放出来,专注于复杂业务逻辑 阅读详情

@JsonInclude

@JsonInclude的使用场景

在前后分离项目中 返回JSON 数据中 因为有分级情况的存在 对应的级层中 使数据如果它为空的时候 我不需要这个字段的返回 但是它不为空的时候 我要用得到 这个注解就完美的解决了这个问题·· ····

@JsonInclude的使用

实体类中使用在这里插入图片描述

属于com.fasterxml.jackson.annotation.JsonInclude;

注解中的源码

 public Include value() default Include.ALWAYS;
 
 public Include content() default Include.ALWAYS;
    public enum Include
    {
    ALWAYS,
    NON_NULL,
    NON_ABSENT,
     NON_EMPTY,
     NON_DEFAULT,
      CUSTOM,
JsonJsonInclude.Include.ALWAYS

任何情况下都序列化该字段,和不写这个注解是一样的效果。

JsonJsonInclude.Include.NON_NULL

这个最常用,即如果加该注解的字段为null,那么就不序列化这个字段了。

JsonJsonInclude.Include.NON_ABSENT

这个包含NON_NULL,即为null的时候不序列化

@TableField

@TableField的使用场景

这个属性不是数据库里面的 多用于一对多 或多对对

@TableField的使用

在这里插入图片描述
在实体类类属性注解上加即可

属于import com.baomidou.mybatisplus.annotation.TableField;

注解中的源码 看之即懂

/*
 * Copyright (c) 2011-2020, baomidou (jobob@qq.com).
 * <p>
 * Licensed under the Apache License, Version 2.0 (the "License"); you may not
 * use this file except in compliance with the License. You may obtain a copy of
 * the License at
 * <p>
 * https://www.apache.org/licenses/LICENSE-2.0
 * <p>
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
 * License for the specific language governing permissions and limitations under
 * the License.
 */
package com.baomidou.mybatisplus.annotation;

import org.apache.ibatis.mapping.ParameterMapping;
import org.apache.ibatis.mapping.ResultMapping;
import org.apache.ibatis.type.JdbcType;
import org.apache.ibatis.type.TypeHandler;
import org.apache.ibatis.type.UnknownTypeHandler;

import java.lang.annotation.*;


/**
 * 表字段标识
 *
 * @author hubin sjy tantan
 * @since 2016-09-09
 */
@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.FIELD)
public @interface TableField {

    /**
     * 字段值(驼峰命名方式,该值可无)
     */
    String value() default "";

    /**
     * 是否为数据库表字段
     * 默认 true 存在,false 不存在
     */
    boolean exist() default true;

    /**
     * 字段 where 实体查询比较条件
     * 默认 `=` 等值
     */
    String condition() default "";

    /**
     * 字段 update set 部分注入, 该注解优于 el 注解使用
     * <p>
     * 例1:@TableField(.. , update="%s+1") 其中 %s 会填充为字段
     * 输出 SQL 为:update 表 set 字段=字段+1 where ...
     * <p>
     * 例2:@TableField(.. , update="now()") 使用数据库时间
     * 输出 SQL 为:update 表 set 字段=now() where ...
     */
    String update() default "";

    /**
     * 字段验证策略之 insert: 当insert操作时,该字段拼接insert语句时的策略
     * IGNORED: 直接拼接 insert into table_a(column) values (#{columnProperty});
     * NOT_NULL: insert into table_a(<if test="columnProperty != null">column</if>) values (<if test="columnProperty != null">#{columnProperty}</if>)
     * NOT_EMPTY: insert into table_a(<if test="columnProperty != null and columnProperty!=''">column</if>) values (<if test="columnProperty != null and columnProperty!=''">#{columnProperty}</if>)
     *
     * @since 3.1.2
     */
    FieldStrategy insertStrategy() default FieldStrategy.DEFAULT;

    /**
     * 字段验证策略之 update: 当更新操作时,该字段拼接set语句时的策略
     * IGNORED: 直接拼接 update table_a set column=#{columnProperty}, 属性为null/空string都会被set进去
     * NOT_NULL: update table_a set <if test="columnProperty != null">column=#{columnProperty}</if>
     * NOT_EMPTY: update table_a set <if test="columnProperty != null and columnProperty!=''">column=#{columnProperty}</if>
     *
     * @since 3.1.2
     */
    FieldStrategy updateStrategy() default FieldStrategy.DEFAULT;

    /**
     * 字段验证策略之 where: 表示该字段在拼接where条件时的策略
     * IGNORED: 直接拼接 column=#{columnProperty}
     * NOT_NULL: <if test="columnProperty != null">column=#{columnProperty}</if>
     * NOT_EMPTY: <if test="columnProperty != null and columnProperty!=''">column=#{columnProperty}</if>
     *
     * @since 3.1.2
     */
    FieldStrategy whereStrategy() default FieldStrategy.DEFAULT;

    /**
     * 字段自动填充策略
     */
    FieldFill fill() default FieldFill.DEFAULT;

    /**
     * 是否进行 select 查询
     * <p>大字段可设置为 false 不加入 select 查询范围</p>
     */
    boolean select() default true;

    /**
     * 是否保持使用全局的 Format 的值
     * <p> 只生效于 既设置了全局的 Format 也设置了上面 {@link #value()} 的值 </p>
     * <li> 如果是 false , 全局的 Format 不生效 </li>
     *
     * @since 3.1.1
     */
    boolean keepGlobalFormat() default false;

    /**
     * JDBC类型 (该默认值不代表会按照该值生效)
     * <p>
     * {@link ResultMapping#jdbcType} and {@link ParameterMapping#jdbcType}
     *
     * @since 3.1.2
     */
    JdbcType jdbcType() default JdbcType.UNDEFINED;

    /**
     * 类型处理器 (该默认值不代表会按照该值生效)
     * <p>
     * {@link ResultMapping#typeHandler} and {@link ParameterMapping#typeHandler}
     *
     * @since 3.1.2
     */
    Class<? extends TypeHandler> typeHandler() default UnknownTypeHandler.class;

    /**
     * 指定小数点后保留的位数
     * <p>
     * {@link ParameterMapping#numericScale}
     *
     * @since 3.1.2
     */
    String numericScale() default "";
}

Jackson注解实战:@JsonInclude的妙用 首先,我们定义一个Employee类,该类包含了一些常见的字段,如姓名、部门、地址、电话号码列表和薪资等。import com// Getter和Setter方法省略 }// Getter和Setter方法省略 }// Getter和Setter方法省略 }// Getter和Setter方法省略 }BigDecimal;// Getter和Setter方法省略 }List; 阅读详情

相关推荐

深入解析Jackson的@JsonInclude注解及其应用实例

import com// 省略getter和setter方法 }// 省略getter和setter方法 }// 省略getter和setter方法 }// 省略getter和setter方法 }Map;// 省略getter和setter方法 }// 省略getter和setter方法 }// 省略getter和setter方法 }// 省略getter和setter方法上述设置指定,如果。

m0_62153576的博客 754

@JsonInclude注解

@JsonInclude注解

qq_44760975的博客 1万+

Jackson序列化中的@JsonInclude使用技巧

在上述代码中,phones字段被标记为@JsonInclude(JsonInclude.Include.NON_NULL),但其getter方法被标记为@JsonInclude(JsonInclude.Include.USE_DEFAULTS)。其中,@JsonInclude注解是控制对象序列化行为的重要手段。此时,phones字段的序列化行为遵循字段级别的@JsonInclude(JsonInclude.Include.NON_NULL)规则,由于phones不是null,因此被序列化为一个空数组。

2501_90323865的博客 726

@JsonInclude

前后端分离的项目,框架中封装了返回给前端的结果。 但是在数据库中查询到的数据为null 的时候,响应的内容没有了,但是前端想要得到这个类型的结构(比如说是个实体,那么就返回他的各个属性;是个数据或集合就返回 [ ] )。最终发现是@JsonInclude这个注解过滤掉了当返回值为null 的时候的属性。 @JsonInclude(JsonInclude.Include.Include.ALWAYS) 默认 @JsonInclude(JsonInclude.Include.NON_DEFAULT ) 属性为默

Mr_Dracy的博客 1万+

java中常用的 @JsonInclude、@JsonIgnore、@JsonIgnoreType、transient关键字修饰字段、@Transient 忽略字段、@JsonAlias等解释

1、通常在一些特殊场景,为了保护某些敏感字段如密码、银行卡号等禁止返回给前端看,所以需要用到属性字段忽略,json序列化方面可以用 @JsonIgnore注解 或 transient关键字修饰字段。【2】@JsonIgnoreType:作用于类,引用该类的单个对象属性会被忽略,但集合列表类的属性不会被忽略(需要注意)属性别名,当入参传入的属性名称是别名中的任意一个,传入的值都可以映射到被标注的这个属性上。【1】@JsonIgnore:作用于属性字段,则忽略该字段不会被序列化。

hkl_Forever的博客 464

SAP FIORI静态磁贴从零到一:配置实战与权限打通

本文详细介绍了SAP FIORI静态磁贴的配置流程与权限管理,从准备工作到后台配置、目标映射、前台组织及权限分配,提供了实战技巧与常见问题解决方案。重点解析了静态磁贴的创建、目标映射配置及权限打通等关键步骤,帮助用户快速掌握FIORI静态磁贴的配置方法。

weixin_29266647的博客 248

标记 @TableField(exist = false) 属性,返回json值为空

注解标记了一个非数据库字段属性,并且在返回 JSON 值时该属性的值为空,可能是因为在序列化 JSON 时忽略了该属性。标记的非数据库字段属性,它在 Java 对象中存在,但是在数据库表中不存在,因此在序列化时被忽略了。默认情况下,Jackson 在序列化 Java 对象为 JSON 时,只会序列化存在的属性。如果你希望在序列化 JSON 时包含该属性的值,可以使用 Jackson 提供的。框架时,在实体类中使用了。

nbspzs的专栏 1842

Hadoop与Kafka集群部署与优化实践指南

分布式系统是现代大数据处理的核心架构,其中Hadoop作为分布式存储与计算框架,Kafka作为分布式消息队列系统,共同构成了实时数据处理的基础设施。通过HDFS实现海量数据存储,结合YARN进行资源调度,而Kafka则保障了数据流的实时传输与高吞吐。这种技术组合在电商用户行为分析、物联网数据采集等场景中表现卓越。部署过程中需关注硬件资源配置、关键参数调优以及集群监控方案,例如通过调整HDFS块大小和Kafka partition数量来优化性能。合理运用Flume、Spark Streaming等工具可实现系

weixin_29061997的博客 360

空字段不返回到界面的设置@JsonInclude

当数据库查询到数据为空时字段会还回空到界面,如下图所示children属性。如果数据库还回null 属性不还回到界面如何处理? 可以在实体类的属性中增加如下注解:@JsonInclude //不为空时才返回这个字段 @JsonInclude(JsonInclude.Include.NON_EMPTY) @TableField(exist = false) private List<CategoryEntity> children; 当实体中对应数据库无属性时 可以使用 ...

ym563099457的博客 464

DIY便携式PEMF磁脉冲治疗仪:百元成本自制生物物理疗法设备

脉冲电磁场(PEMF)疗法是一种基于生物物理原理的非侵入性技术,它通过特定频率的电磁脉冲作用于细胞层面,影响细胞膜电位和离子通道活动,从而可能调节细胞代谢与功能。其技术价值在于提供了一种物理干预手段,在健康科技和生物黑客领域被探索用于放松、恢复等场景。实现PEMF的核心是通过信号发生与功率放大驱动电磁线圈产生可控磁场。本文以蓝牙音频模块和智能手机App为切入点,详细解析了如何利用低成本电子元件(如DFRobot XY-WRBT模块和漆包线线圈)构建一个可自定义频率的便携式PEMF设备,涵盖了从电路设计、线圈

weixin_31476015的博客 346

深入浅出ASAP2标准:手把手教你编写和解析A2L文件(含Python示例代码)

本文深入解析ASAP2标准下的A2L文件,涵盖基础概念、文件结构及Python实现代码,帮助开发者掌握汽车ECU标定和测量中的关键数据管理技术。通过详细示例,展示如何编写和解析A2L文件,提升电控数据管理效率。

happy2的博客 1099

java小知识:mybatisplus注解,映射数据表属性字段

springboot框架常用注解 1.接口不返回空字段

危险、的博客 1041

【四足机器人项目实战】四足机器人腿部机械结构设计

系列文章目录 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 TODO:写完再整理 文章目录系列文章目录前言 前言 认知有限,望大家多多包涵,有什么问题也希望能够与大家多交流,共同成长! 本文先对四足机器人–腿部机械结构设计做个简单的介绍,具体内容后续再更,其他模块可以参考去我其他文章 提示:以下是本篇文章正文内容 为了减轻腿部惯量,使用有限元分析着重进行轻量化设计,小腿采用工字梁方案,大腿采用内部镂方案,并使用1.5 mm的AL 6061硬质材料,轻量化的腿部设了腿部运动时摆动

qq_35635374的博客 7538

dao层中有不在数据库中的字段

//直接使用一个注解 @TableField(exist = false) @TableField(exist = false) @JsonInclude(JsonInclude.Include.NON_EMPTY) private List<CategoryEntity> children; @TableField(exist = false) 就是声明这个字段不在这个数据库中,查询的时候,就不会将这个字段添加上去。 ...

weixin_45639532的博客 347

一篇文章认识《双目立体视觉》

双目立体视觉,由两个摄像头组成,像人的眼睛能看到三维的物体,具有深度的信息;单目视觉只能看到二维的物体。 1)双目摄像头 2)双目相机基线 3)打开双目摄像头 4)双目测距 视差disparity、 极线约束、 极线校正/立体校正、 a.双目标定 b.双目矫正 c.立体匹配 d.双目测距(三角测量) e.测距效果 立体视觉方法评测网站

黎国溥 7958

基于MATLAB/Simulink平台进行新能源微电网运行控制的建模与仿真

新能源微电网是现代电力系统的重要组成部分,能够有效整合分布式能源(如光伏、风力发电)和储能设备,实现局部区域内的能源高效利用。微电网的运行控制涉及多源能量管理、负荷平衡以及并网/孤岛模式切换等关键问题。基于MATLAB/Simulink平台进行新能源微电网运行控制的建模与仿真,可以帮助研究者验证控制策略的有效性,并优化系统的动态性能和经济性。本项目旨在构建一个完整的新能源微电网模型,包括电源模块、储能模块、负荷模块以及控制器模块,并通过仿真分析其运行特性。

xiaoheshang_123的博客 420

MybatisPlus 自定义 TypeHandler 映射JSON类型为JSONObject,报错 no typehandler found for property dataparams

3.xml中对应的 result要加属性,mybatis-plus就方便多了,框架已经实现了自定义typeHandler类。2.实体类型为JSONObject,头上也要加注解。1.实体类上一定要加注解。

weixin_59755109的博客 3146

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

java常用的注解

在系统启动即执行的执行顺序(适用于spring的类初始化加载场景,如果是普通类,单纯的去实例化这个类,@PostConstruct、CommandLineRunner不会起作用):static{}> Constructor > @Autowired > @PostConstruct> CommandLineRunner。3:@Validated 进行校验的时候,当校验不通过的时候,程序会抛出400异常,阻止方法中的代码执行,这时需要再写一个全局校验异常捕获处理类,然后返回校验提示。

while(life)++; 817

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

JAVA注解大全(个人复习不断增加)

以前,XML是各大框架的青睐者,它以松耦合的方式完成了框架中几乎所有的配置,但是随着项目越来越庞大,XML的内容也越来越复杂,维护成本变得越来越高。 于是就有人提出来一种标记式高耦合的配置方式,注解。方法上可以进行注解,类上也可以注解,字段属性上也可以注解,反正几乎需要配置的地方都可以进行注解。 关于注解和XML两种不同的配置模式,争论了好多年了,各有各的优劣,注解可以提供更大的便捷性,易于维护修改,但耦合度高,而 XML 相对于注解则是相反的。 追求低耦合就要抛弃高效率,追求效率必然会遇到耦合。本文意不再

淡若清风 5558

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

SSM+Vue+MySQL建筑官网项目实战:从环境配置到部署上线的全流程解析

在Java Web开发领域,SSM(Spring+SpringMVC+MyBatis)框架与Vue.js前端框架的组合,构成了经典且高效的前后端分离架构。其核心原理在于后端通过SpringBoot提供RESTful API接口处理业务逻辑与数据持久化,前端Vue则负责用户界面渲染与交互,两者通过HTTP协议进行数据通信。这种架构的技术价值在于实现了关注点分离,提升了开发效率、代码可维护性以及团队协作能力,尤其适用于企业级应用、管理后台及内容展示型网站的开发。在实际应用场景中,一个典型的建筑公司官网项目便常采

weixin_34343000的博客 591

【Java注解系列】注解@JsonInclude

`@JsonInclude`是一个用于Java类中字段或方法的注解,它来自于Jackson库。Jackson库是一个用于处理JSON数据的流行开源库,在Java对象和JSON之间进行序列化和反序列化时经常被使用。

wang2leee的博客 2940

SpringBoot注解--08--注解@JsonInclude

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档。

时光里的博客 2424

@JsonInclude注解关于json序列化显示

JsonInclude注解是Jackson中最常用的注解之一,是实体类在接口序列化返回值时所使用规则的注解。比如说我们在开发过程中,返回前端的实体类中如果某个字段为空或者特定值的话,那么就不返回这个字段了。这种场景下,@JsonInclude就是用来解决这个问题。在实体类序列化成Json时在某些策略下,加了该注解的字段不去序列化该字段。

m0_71239320的博客 2166

@JsonInclude(JsonInclude.Include.NON_EMPTY)注解用法详解,@JsonInclude、@JsonIgnore两者的区别和递归查找数据的详解

递归数据也就是List,该字段的list集合中存放了0或多个对象,所以在层级数据的最后一层后面没有层级数据的时候就要使用@JsonInclude注解不给前端返回。在实体类的这个字段childrenCategories上加上注解@JsonInclude(JsonInclude.Include.NON_EMPTY) 问题就解决了。在这里三级部门后面是没有部门的。后者是该字段可能为一个递归的数据,也就是说,本身字段是有数据的,但字段里面的数据所包含的数据可能为空。

weixin_53618357的博客 3166

Java 注解@JsonInclude()的使用

一.介绍@JsonInclude() 1.在类上加入@JsonInclude(value = JsonInclude.Include.NON_NULL),表明该类为NULL的字段不参加序列化! 2.将该标记放在属性上,如果该属性为NULL则不参与序列化 ! 3.如果放在类上边,那对这个类的全部属性起作用 ! 二.参数介绍 nclude.Include.ALWAYS -------------->默认 Include.NON_DEFAULT ------------->属性为默认值不序列化 In

javaeEEse的博客 6520
上一篇: spring boot和spring cloud版本选择
下一篇: ip修改后Oracle服务无法启动怎么办
Yur__
博客等级 码龄7年 21粉丝 10原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值