前言:
在前面我们已经了解到,Spring Boot项目中,可以传递一个参数,或者多个参数,但是,随着参数的增加,咱们总不能每增加一个参数,就重新写一段代码吧??这样显得很是臃肿,因此,我们可以将多个参数封装成一个对象来进行传递,每当增加一个参数的时候,就在对象里面增加一个属性,并重写Setter ,getter ,toString方法等操作来简化代码!这样就显得很简单方便操作了!
假设这是我们一开始的代码:
@RestController
@RequestMapping("/param")
public class ParamController {
@RequestMapping("/m1")
public String m1(String name){
return "这是你的姓名:"+name;
}
}
当我们不仅仅满足一个name属性的时候,开始增加一个参数id,那么此时的代码可以为:
@RestController
@RequestMapping("/param")
public class ParamController {
@RequestMapping("/m1")
public String m1(String name){
return "这是你的姓名:"+name;
}
@RequestMapping("/m2")
public String m2(String name,Integer id){
return "序列号为:"+ id +"这是你的姓名:"+name;
}
}
问题:
当我们不仅仅满足一个name和id属性的时候,开始增加一个参数age,那么此时我们就得思考一下了,如果只是这么几个属性的话,简单的增加是没啥问题的,但是,当属性越来越多(成百上千)的话,我们又该如何处理?是一直这么写下去吗?这得显得多么臃肿啊!显得不是很美观!!
解决方案:
那么,正确的做法(首推)为:创建一个对象,并重写Setter ,getter ,toString方法等!
假设,创建一个Person类:
//将参数封装为对象
public class Person {
Integer id;
String name;
Integer age;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
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 "Person{" +
"id=" + id +
", name='" + name + '\'' +
", age=" + age +
'}';
}
}
此时,我们在Spring Boot项目中来进行传递的时候,便可以将Person对象传入即可!
//将Person对象传入
@RequestMapping("/m3")
public String m3(Person person){
return " 接收到的参数:Person:"+person.toString();
}
重写启动程序:
在浏览器中输入:localhost:8080/param/m3
当我们对其中某个参数赋值的时候:localhost:8080/param/m3?id=10&name=zhangsan
显而易见,当我们对其中某个参数赋值,客户端返回的就是我们所赋值的参数数据,当我们对其中某个元素没有赋值的情况下,客户端返回的就是null(或者其他默认值)
当然,我们也可以用Postman来操作一下:
在没有参数传入的时候:http://localhost:8080/param/m3
在只传入某个参数的时候: