确定前后端代码是没有问题的
首先看一下后端代码
@RestController
public class TestController {
@PostMapping("/test")
public void testPost(@RequestBody Discipline discipline){
System.out.println("================================");
System.out.println(discipline.toString());
}
}
看一眼实体类要测试的这个字段
@ApiModelProperty(value = "处理人,role=3")
private String mId;
再看一下前端请求
methods:{
test(){
this.$http.post(`test`,{mId:888})
}
}
通常情况下,后端打印出来的mId应该为:888,但是真实的结果是
为什么会出现这样的情况?
Spring Boot 在进行序列化时,字段名的大小写通常会被转换为小写。这是因为 Spring Boot 默认使用 Jackson 库进行 JSON 序列化和反序列化,而 Jackson 库在处理字段名时遵循了 Java Beans 规范。在 Java Beans 规范中,字段名一般是以驼峰命名法来命名的,即第一个单词的首字母小写,后续单词的首字母大写。例如,"mId"会被认为是一个属性名,按照驼峰命名法,它会被解释为 "mid"。
因此,主要问题还是出现在数据库的命名上,导致实体类的命名不规范,mId这样的命名,不论是在序列化还是反序列化的时候都会变成mid
解决办法:
最好的办法是数据库字段命名可以设计成这样:manager_id
如果项目修改很麻烦,可以在Java实体类的属性是加上这个注解
@JsonProperty("mId")
private String mId;
重启后再看一下结果,问题迎刃而解