【辰兮要努力】:hello你好我是辰兮,很高兴你能来阅读,昵称是希望自己能不断精进,向着优秀程序员前行!
博客来源于项目以及编程中遇到的问题总结,偶尔会有读书分享,我会陆续更新Java前端、后台、数据库、项目案例等相关知识点总结,感谢你的阅读和关注,希望我的博客能帮助到更多的人,分享获取新知,大家一起进步!
吾等采石之人,应怀大教堂之心,愿大家奔赴在各自的热爱里…
hello本期继续以实际案例的形式分享Java基础之 Java后台接受数组和集合的案例,分享给初学者
首先我们模拟创建一个user的实例
/** * @program: demo * @description: 普通用户 * @author: 辰兮要努力 * @create: 2021-10-03 11:04 */ @Data public class User { private String id; private String name; private Integer age; }
创建一个公共的返回值的帮助类
import lombok.Data; /** * @program: demo * @description: 封装公共的返回值 * @author: 辰兮要努力 * @create: 2021-10-03 11:05 */ @Data public class Result<T> { private static final long serialVersionUID = 1L; private Integer code; private String msg; private T data; public static Result fail() { Result Result = new Result(); Result.setCode(1); Result.setMsg("服务器错误!!!"); return Result; } public static Result fail(String msg) { Result Result = new Result(); Result.setCode(1); Result.setMsg(msg); return Result; } public static <T> Result success(T data) { Result Result = new Result(); Result.setCode(0); Result.setData(data); return Result; } public static Result success() { Result Result = new Result(); Result.setCode(0); Result.setMsg("操作成功!"); Result.setData("success"); return Result; } }
业务场景一:前端传对象集合后台如何接受?
[ { "id":"1", "name":"辰兮", "age":"22" }, { "id":"2", "name":"辰兮要努力", "age":"23" } ]
后台接受方式
@RequestBody List<User> userList
业务场景二:前端传数组后台如何接受?
["2021","2022"]
后台接受方式
@RequestBody List<String> list
简单的写一个controller层模拟业务操作:重在查看入参
/** * @program: demo * @description: 前后端传值交互案例 * @author: 辰兮要努力 * @create: 2021-10-03 11:09 */ @RestController @RequestMapping("/user") public class UserController { //打印日志 private static final Logger logger = LoggerFactory.getLogger(UserController.class); /** * 前端传对象集合 后端用集合接 * @param userList * @return */ @PostMapping("/saveList") public Result saveUserList(@RequestBody List<User> userList) { logger.info("传入的参数是{}",userList); //模拟逻辑层做一个入参校验 if (CollectionUtils.isEmpty(userList)){ return Result.fail(); } return Result.success(); } /** * 业务场景:前端传入单独一个数组 * @param list * @return */ @PostMapping("/saveUserIds") public Result saveStrings(@RequestBody List<String> list) { logger.info("传入的参数是{}",list); //模拟逻辑层做一个入参校验 if (CollectionUtils.isEmpty(list)){ return Result.fail(); } return Result.success(); } }
业务场景一:前端传对象的集合后端就用对应的list接受即可
业务场景二:前端传对应的数组后台接受
来看看控制台打印的参数
使用如上的方法即可成功接受前端传入的集合或者数组
你是否遇到过这样的问题,就是前端除了传一个集合外,还要传一个字符串或者数字等属性?
业务场景:传入的集合代表要操作的数据,传入的字符串,字符串/数字 不同 走不同的业务逻辑等
入参案例如下
{ "userList":[{"id ":"1","name":"辰兮","age":"22"},{"id":"2","name":"辰兮要努力","age":"23"}], "open":1 }
接受方式:创建一个对象接受
/** * @program: demo * @description: 用户对象接受类 * @author: 辰兮要努力 * @create: 2021-10-03 11:04 */ @Data public class UserVo { private List<User> userList; private Integer open; }
实践案例如下
/** * @program: demo * @description: 前后端传值交互案例 * @author: 辰兮要努力 * @create: 2021-10-03 11:09 */ @RestController @RequestMapping("/user") public class UserController { //打印日志 private static final Logger logger = LoggerFactory.getLogger(UserController.class); /** * 业务场景:前端传一个数组➕一个字符串或者数字等 * @param userVo * @return */ @PostMapping("/saveUserVo") public Result saveUserVoList(@RequestBody UserVo userVo) { logger.info("传入的参数是{}",userVo); return Result.success(); } }
我们可以debug查看一下入参,很清晰的可以看到前端传入的参数
前后端传参,最重要的还是统一好对应的参数属性名称,传参方式等,提前确认好,开发效率会大幅提高
解答:前端除了传一个集合外,还要传一个字符串或者数字等属性,我们创建一个VO对象来接受即可解决如上的问题
hello,你好 我是辰兮,后续我会继续整理一下Java基础的相关案例,希望可以帮助到更多的初学者,欢迎学习、分享、交流、打卡!
非常感谢你阅读到这里,如果这篇文章对你有帮助,希望能留下你的点赞