当前位置: 首页 > news >正文

用Java在Spring Boot项目中,如何传递来传递一个对象(多个参数??

前言:

在前面我们已经了解到,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;}@Overridepublic 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

在只传入某个参数的时候:

http://www.lryc.cn/news/311598.html

相关文章:

  • 如何利用ChatGPT搞科研?论文检索、写作、基金润色、数据分析、科研绘图(全球地图、植被图、箱型图、雷达图、玫瑰图、气泡图、森林图等)
  • 一命通关二分搜索
  • 串联所有单词的子串
  • 【会议征稿通知】第四届经济发展与商业文化国际学术会议(ICEDBC2024)
  • 回溯算法套路③排列型回溯+N皇后【基础算法精讲 16】
  • MyBatis-Plus 框架中的自定义元对象处理器
  • Node.js_基础知识(fs模块 - 文件操作)
  • 基于C#开发OPC DA客户端——搭建KEPServerEX服务
  • 让你的函数,返回你需要的“两个值” (函数传址、结构体作为参数传参)
  • 快速上手:在 Android 设备上运行 Pipy
  • 【操作系统学习笔记】文件管理1.3
  • 基于springboot+vue的酒店管理系统
  • Linux 相关命令
  • 阿里云搭建私有docker仓库(学习)
  • MySQL数据库基本操作(一)
  • 【暗月安全】2021年渗透测试全套培训视频
  • HTML极速入门
  • Django框架——请求与响应
  • rearrangement-challenge-2022环境使用学习(一)
  • [Uniapp]携带参数跳转界面(两种方法)
  • Scrapy与分布式开发(2.1.2):python常用网络请求库httpx
  • 07. Nginx进阶-Nginx负载均衡
  • windows/linux下其他位置调用指定nodejs脚本报错Error: Cannot find module ‘esm’
  • 2024-03-05 linux 分区老显示满,Use 100%,原因是SquashFS 是一种只读文件系统,它在创建时就已经被填满,所有空间都被使用。
  • 蓝桥杯倒计时 41天 - KMP 算法
  • 《汇编语言》- 读书笔记 - 第13章-int 指令
  • 深入了解 Golang 条件语句:if、else、else if 和嵌套 if 的实用示例
  • 大数据和机器学习在气象预报中的应用-张平文院士
  • C#高级:Winform桌面开发中DataGridView的详解
  • java八股文复习-----2024/03/05----基础---反射,动态代理。序列化