hooyantsing's Blog

00005_浅谈Spring数据绑定

字数统计: 612阅读时长: 2 min
2020/11/01

不使用任何注解

单值对应单键

后端用例:

POJO类-User

1
2
3
4
5
6
7
8
@Data
@NoArgsConstructor
@AllArgsConstructor
public class User {
private String name;
private Integer age;
private String sex;
}

基本类型和对象类型混合

1
2
3
4
@RequestMapping({"/","index","index.html"})
public ResponseResult index(User user,String name,String age){
return new ResponseResult(200,name + " | " + age,user);
}
编码类型:QueryString

URL:http://127.0.0.1/index?name=hooy&age=18

数据存放:请求行

请求类型:Get Post Put Delete

hooy.xyz

编码类型:application/x-www-from-urlencoded

URL:http://127.0.0.1/index

数据存放:请求体

请求类型:Post Put Delete

hooy.xyz

编码类型:multipart/form-data

URL:http://127.0.0.1/index

数据存放:请求体

请求类型:Get Post Put Delete

hooy.xyz

编码类型:application/json

URL:http://127.0.0.1/index

数据存放:请求体

请求类型:无

多值共用同一个键

编码类型:QueryString

1
name = hooy & age = 18 & age = 21

后端用例:

1
2
3
4
@RequestMapping({"/","index","index.html"})
public ResponseResult index(String name,int[] age){
return new ResponseResult(200,name + " | " + age[0] + " | " + age[1]);
}

总结

前端传过来的key与后端接收的变量名/对象内变量名一致,将自动赋值。

可以读取 请求行请求体 中的数据。

  • 支持QueryString和application/x-www-from-urlencoded、multipart/form-data。
  • 不支持application/json,无法赋值。

RequestParam 注解

用于前端传过来的key映射到不同名的变量名上。

1
2
3
4
@RequestMapping({"/","index","index.html"})
public ResponseResult index(User user, @RequestParam("name") String username, String age){
return new ResponseResult(200,username + " | " + age,user);
}

注解有三个参数,分别是:

  • value:参数名
  • required:是否包含该参数,默认为true,表示该请求路径中必须包含该参数,如果不包含就报错
  • defaultValue:默认参数值,如果设置了该值,required=true将失效,自动为false,如果没有传该参数,就使用默认值

RequestBody 注解

用于批量插入数据(适合使用json数列)

1
2
3
4
@RequestMapping({"/","index","index.html"})
public ResponseResult index(@RequestBody List<User> listUser){
return new ResponseResult(200,"",listUser);
}

hooy.xyz

结语

QueryStringapplication/x-www-from-urlencodedmultipart/form-data格式传递数据,后端接收变量可以不加注解或者使用 RequestParam(key) 注解。

如果有需要批量插入数据,推荐使用 application/json 这种Json格式传递数据,后端接收变量需加上 RequestBody 注解。

最后,如有纰漏,欢迎指正,共同进步。

CATALOG
  1. 1. 不使用任何注解
    1. 1.1. 单值对应单键
      1. 1.1.1. 编码类型:QueryString
      2. 1.1.2. 编码类型:application/x-www-from-urlencoded
      3. 1.1.3. 编码类型:multipart/form-data
      4. 1.1.4. 编码类型:application/json
    2. 1.2. 多值共用同一个键
    3. 1.3. 总结
  2. 2. RequestParam 注解
  3. 3. RequestBody 注解
  4. 4. 结语