在使用简单参数做为数据传递方式时,前端传递了多少个请求参数,后端controller方法中的形参就要书写多少个。如果请求参数比较多,通过上述的方式一个参数一个参数的接收,会比较繁琐。
此时,我们可以考虑将请求参数封装到一个实体类对象中。 要想完成数据封装,需要遵守如下规则:请求参数名与实体类的属性名相同
定义POJO实体类:
public class User {
? ?private String name;
? ?private Integer age;
?
? ?public String getName() {
? ? ? ?return name;
? }
?
? ?public void setName(String name) {
? ? ? ?this.name = name;
? }
?
? ?public Integer getAge() {
? ? ? ?return age;
? }
?
? ?public void setAge(Integer age) {
? ? ? ?this.age = age;
? }
?
? ?@Override
? ?public String toString() {
? ? ? ?return "User{" +
? ? ? ? ? ? ? ?"name='" + name + '\'' +
? ? ? ? ? ? ? ?", age=" + age +
? ? ? ? ? ? ? ?'}';
? }
}
?
Controller方法:
@RestController
public class RequestController {
? ?//实体参数:简单实体对象
? ?@RequestMapping("/simplePojo")
? ?public String simplePojo(User user){
? ? ? ?System.out.println(user);
? ? ? ?return "OK";
? }
}
Postman测试:
参数名和实体类属性名一致时
参数名和实体类属性名不一致时
上面我们讲的呢是简单的实体对象,下面我们在来学习下复杂的实体对象。
复杂实体对象指的是,在实体类中有一个或多个属性,也是实体对象类型的。如下:
User类中有一个Address类型的属性(Address是一个实体类)
复杂实体对象的封装,需要遵守如下规则:
请求参数名与形参对象属性名相同,按照对象层次结构关系即可接收嵌套实体类属性参数。
定义POJO实体类:
Address实体类
public class Address {
? ?private String province;
? ?private String city;
?
? ?public String getProvince() {
? ? ? ?return province;
? }
?
? ?public void setProvince(String province) {
? ? ? ?this.province = province;
? }
?
? ?public String getCity() {
? ? ? ?return city;
? }
?
? ?public void setCity(String city) {
? ? ? ?this.city = city;
? }
?
? ?@Override
? ?public String toString() {
? ? ? ?return "Address{" +
? ? ? ? ? ? ? ?"province='" + province + '\'' +
? ? ? ? ? ? ? ?", city='" + city + '\'' +
? ? ? ? ? ? ? ?'}';
? }
}
User实体类
public class User {
? ?private String name;
? ?private Integer age;
? ?private Address address; //地址对象
?
? ?public String getName() {
? ? ? ?return name;
? }
?
? ?public void setName(String name) {
? ? ? ?this.name = name;
? }
?
? ?public Integer getAge() {
? ? ? ?return age;
? }
?
? ?public void setAge(Integer age) {
? ? ? ?this.age = age;
? }
?
? ?public Address getAddress() {
? ? ? ?return address;
? }
?
? ?public void setAddress(Address address) {
? ? ? ?this.address = address;
? }
?
? ?@Override
? ?public String toString() {
? ? ? ?return "User{" +
? ? ? ? ? ? ? ?"name='" + name + '\'' +
? ? ? ? ? ? ? ?", age=" + age +
? ? ? ? ? ? ? ?", address=" + address +
? ? ? ? ? ? ? ?'}';
? }
}
Controller方法:
@RestController
public class RequestController {
? ?//实体参数:复杂实体对象
? ?@RequestMapping("/complexPojo")
? ?public String complexPojo(User user){
? ? ? ?System.out.println(user);
? ? ? ?return "OK";
? }
}
Postman测试: