SpringBoot中@GetMapping参数接收理解

Posted OkidoGreen

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SpringBoot中@GetMapping参数接收理解相关的知识,希望对你有一定的参考价值。

当参数为基本类型时

@GetMapping("/example1")
public void example1(Float money, String product)
    System.out.println("product:"+ product);//product:洗洁精
    System.out.println("money:"+ money);//money:123.0

//请求url:http://localhost:8888/example1?money=123&product=洗洁精

当参数为数组

 @GetMapping("/example2")
    public void example2(String[] keywords)
        if (keywords != null)
            for (int i=0; i<keywords.length; i++)
                System.out.println(keywords[i]);//123 456
            
        
    
    //请求url:http://localhost:8888/example2?keywords=123,456

当参数为简单对象时

@GetMapping("/example3")
    public void example3(SubTest1 subTest1)
        System.out.println(subTest1);//SubTest1content='测试内容'
    
    //请求url:http://localhost:8888/example3?content=测试内容
public class SubTest1 
    private String content;
    public String getContent() 
        return content;
    
    public void setContent(String content) 
        this.content = content;
    
    @Override
    public String toString() 
        return "SubTest1" +
                "content='" + content + '\\'' +
                '';
    

当参数的对象中嵌套着对象,对象中的属性为list和map时

@GetMapping("/example4")
    public void example4(TestDto testDto)
        System.out.println(testDto);//TestDtotitle='测试标题', subTest=SubTestids=[123, 456], map=k=value, subTest1=SubTest1content='测试内容'
    
    //请求url:http://localhost:8888/example4?title=测试标题&subTest.ids[0]=123&subTest.ids[1]=456&subTest.map[k]=value&SubTest1.content=测试内容
public class TestDto 
    private String title;
    private SubTest subTest;
    private SubTest1 subTest1;
    public SubTest1 getSubTest1() 
        return subTest1;
    
    public void setSubTest1(SubTest1 subTest1) 
        this.subTest1 = subTest1;
    
    @Override
    public String toString() 
        return "TestDto" +
                "title='" + title + '\\'' +
                ", subTest=" + subTest +
                ", subTest1=" + subTest1 +
                '';
    
    public String getTitle() 
        return title;
    
    public void setTitle(String title) 
        this.title = title;
    
    public SubTest getSubTest() 
        return subTest;
    
    public void setSubTest(SubTest subTest) 
        this.subTest = subTest;
    

public class SubTest 
    private List<Long> ids;
    private Map map;
    public Map getMap() 
        return map;
    
    public void setMap(Map map) 
        this.map = map;
    
    public List<Long> getIds() 
        return ids;
    
    public void setIds(List<Long> ids) 
        this.ids = ids;
    
    @Override
    public String toString() 
        return "SubTest" +
                "ids=" + ids +
                ", map=" + map +
                '';
    

//TODO:在直接用list作为参数的时候,程序会报错的;直接用map作为参数的时候,没办法获取到值,都是null,但是不会报错;不知道是姿势错误,还是本身不支持;

map参考:

SpringBoot用实体或Map接收Get请求传递过来的多个参数_缘醉丶莫求的博客-CSDN博客_getmapping接收多个参数@RestController@RequestMapping("/test")public class TestController @GetMapping("/f1") public void func1(@RequestParam(required = false)Map map) System.out.println(map); //name=新一, age=22 @GetMapping("/f2") pubhttps://blog.csdn.net/qq_37698425/article/details/107667913

开发者涨薪指南 48位大咖的思考法则、工作方式、逻辑体系

以上是关于SpringBoot中@GetMapping参数接收理解的主要内容,如果未能解决你的问题,请参考以下文章

Springboot @GetMapping 自动接收对象参数源码分析

Springboot @GetMapping 自动接收对象参数源码分析

Spring Boot:以 Pageable 作为请求参数的 @GetMapping 无法按预期工作

在 Spring 的 GetMapping 中使用参数会导致多个参数的处理程序方法不明确

利用注解@getmapping怎样传递数据url中的值

springboot接受post/get参数值的几种形式,Java