主讲raw参数类型怎么写
版本是7.3以后的
准备
@Data
public class User {
private String name;
private Integer age;
private List<Integer> intList;
private List<String> stringList;
private Address address;
private List<Address> addressList;
}
@Data
public class Address {
private String addressName;
}
@RequestBody
全部为post请求
案例一:String
@PostMapping("1")
public void fdf(@RequestBody String name) {
System.out.println(name);
}
直接把字符串写上
案例二:对象
情况一:对象属性无List属性或属性是另一个对象的情况
@Data
public class User {
private String name;
private Integer age;}
@PostMapping("2")
public void fsdfdsf(@RequestBody User user) {
System.out.println(user.toString());
}
情况二:属性存在List
@Data
public class User {
private String name;
private Integer age;
private List<Integer> intList;
private List<String> stringList;}
@PostMapping("2")
public void fsdfdsf(@RequestBody User user) {
System.out.println(user.toString());
System.out.println(user.getIntList());
}
情况三:属性为一个对象时
@Data
public class User {
private String name;
private Integer age;
private List<Integer> intList;
private List<String> stringList;
private Address address;
}
@Data
public class Address {
private String addressName;
}
@PostMapping("3")
public void fsdsf(@RequestBody User user) {
System.out.println(user.getAddress().toString());
}
情况四:属性为对象List时
@Data
public class User {
private String name;
private Integer age;
private List<Integer> intList;
private List<String> stringList;
private Address address;
private List<Address> addressList;
}
@Data
public class Address {
private String addressName;
}
@PostMapping("4")
public void fs4dsf(@RequestBody User user) {
System.out.println(user.getAddressList());
}
{
"name":"hello",
"age": 18,
"intList":[1,2,3,4,5,6],
"stringList":["a","b","c","d"],
"address":{
"addressName":"word"
},
"addressList":[{"addressName":"hello"},{"addressName":"word"},{"addressName":"my name is Liang"}]
}
实例三:List
@PostMapping("5")
public void fs4d8sf(@RequestBody List<String> list) {
System.out.println(list);
}
["hello","word","my name is Liang"]
实例四:List<User>
@Data
public class User {
private String name;
private Integer age;
private List<Integer> intList;
private List<String> stringList;
private Address address;
private List<Address> addressList;
}
@Data
public class Address {
private String addressName;
}
@PostMapping("6")
public void fs48d8sf(@RequestBody List<User> userList) {
System.out.println(userList);
}
[
{
"name":"hello",
"age": 18,
"intList":[1,2,3,4,5,6],
"stringList":["a","b","c","d"],
"address":{
"addressName":"word"
},
"addressList":[{"addressName":"hello"},{"addressName":"word"},{"addressName":"my name is Liang"}]
},
{
"name":"hello",
"age": 18,
"intList":[1,2,3,4,5,6],
"stringList":["a","b","c","d"],
"address":{
"addressName":"word"
},
"addressList":[{"addressName":"hello"},{"addressName":"word"},{"addressName":"my name is Liang"}]
}
]
实例五:参数为一个对象,一个字符串, raw参数类型应该怎么写?
或许有些人想要像下面那样子写,但是会报错:
@PostMapping("test")
public String add(@RequestBody SysUser sysUser, @RequestBody String name) {
return "";
}
正确的处理方式是新建一个DTO来接收参数。
@Data
public class SysUser {
private String username;
}
SysUserDTO:
@Data
public class SysUserDTO extends SysUser {
private String name;
}
最后的写法:
@PostMapping("test")
public String add(@RequestBody SysUserDTO sysUserDTO) {
return "";
}
结语
@RequestParam时不适用