Spring Boot应用向MySQL插入数据时业务字段全为null如何解决
问题原因
Spring MVC对@RequestBody参数做JSON反序列化时,默认通过请求JSON的key和实体类属性名做匹配映射。你当前Postman请求体的key为name、address、code,但Department实体类的对应属性名为deparmentName、deparmentAddress、departmentCode,双方字段名完全不匹配,导致反序列化后这三个属性值全部为null,最终插入数据库的字段自然为空。
解决方案
可任选以下一种方案解决:
方案1:调整请求体字段名(推荐)
将Postman请求体的key修改为和实体类属性名完全一致:
{ "deparmentName":"AS", "deparmentAddress":"123 Street", "departmentCode":"AS-006" }
注意:实体类中
deparmentName、deparmentAddress存在拼写错误(正确拼写为department,缺少字母t),建议先修正属性名和对应的getter/setter方法,再同步修改请求体字段,避免后续维护出现更多问题。
方案2:显式指定JSON映射字段
如果需要保留现有请求体的字段结构,可在实体类对应属性上添加@JsonProperty注解,显式指定JSON映射的key,无需修改现有请求:
首先导入Jackson注解(Spring Boot默认web场景已内置相关依赖,无需额外引入包):
import com.fasterxml.jackson.annotation.JsonProperty;
修改Department.java对应属性代码:
@Column(name="name") @JsonProperty("name") private String deparmentName; @Column(name = "address") @JsonProperty("address") private String deparmentAddress; @Column(name = "code") @JsonProperty("code") private String departmentCode;
内容的提问来源于stack exchange,提问作者i'mgnome
相关产品推荐
相关产品推荐

