@RequestBody 接收数组、List 参数
@RequestBody 接收的是请求体里面的数据
注意:同一个方法中,@RequestBody
与 @RequestParam()
可以同时使用。前者只能有一个,后者可以有多个。
import com.cncqs.commoncore.response.R;
import org.springframework.http.ResponseEntity;
/**
* 接收单个 String 参数
* 单个参数时使用 String 类型传输,比如 int、long、flout 等等,都使用 String
* @param uid 前端传递参数格式:{"uid": "1"}
*/
@PostMapping("getById")
public ResponseEntity<Object> getById(@RequestBody String uid) {
return R.ok().put("id", uid);
}
/**
* 接收字符串数组,如果是整形数组,则换成Integer[] ids即可。
* @param ids 前端传递参数格式:["1", "2", "3", "4"]
*/
@PostMapping("getByIds")
public ResponseEntity<Object> getByIds(@RequestBody String[] ids) {
return R.ok().put("ids", Arrays.asList(ids));
}
/**
* 接收 List<Map<String,Object> 参数
* @param ids 前端传递参数格式:[{"name": "张三", "id": 1, "age": 12}]
*/
@PostMapping("getByIds")
public ResponseEntity<Object> getByIds(@RequestBody List<String> ids) {
return R.ok().put("ids", ids);
}
/*********************** 使用POJO类接收参数 ***********************/
// 定义实体类
class User {
private Integer uid;
public Integer getId() {
return uid;
}
public void setId(Integer id) {
this.uid = id;
}
}
/**
* 接收单个POJO对象
* @param user 前端传递的参数格式:{"id": 1, "name: "张三"}
*/
@PostMapping("saveUser")
public ResponseEntity<Object> saveUser(@RequestBody User user) {
System.out.print(user.toString());
}
/**
* 接收POJO List
* @param userList 前端传递的参数格式:[{"id": 1, "name: "张三"}]
*/
@PostMapping("saveUserList")
public ResponseEntity<Object> saveUserList(@RequestBody List<User> userList) {
for (User user : userList) {
System.out.print(user);
}
}
@RequestBody获取参数为空
代码如下。SpringBoot
解析器在解析 JSON
过程中因字段名驼峰命名无法匹配字段名导致,加上如下注解即可。
// 控制器
@ApiOperation("新增角色")
@PostMapping("addRole")
public R<SysRole> addRole(@RequestBody SysRole roleForm) {
System.out.print(">>>>" + roleForm.getROLE_NAME()); // 控制输出 null
sysRoleService.addRole(roleForm.getROLE_NAME());
return R.ok();
}
// 实体类
+ import com.fasterxml.jackson.annotation.JsonProperty;
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("sys_role")
public class SysRole implements Serializable {
public String getROLE_NAME() {
return ROLE_NAME;
}
+ @JsonProperty(value = "ROLE_NAME")
public void setROLE_NAME(String ROLE_NAME) {
this.ROLE_NAME = ROLE_NAME;
}
}
Parameter 'ids' not found. Available parameters are collection, list
- 如果 DAO 层参数传递是 List,则在mabits中设置
collection="list"
- 如果 DAO 层参数传递是数组,则在mabits中设置
collection="array"
// DAO层
public interface SysRoleMapper extends BaseMapper<SysRole> {
/**
* 删除多个角色
* @param ids /
*/
void deleteAll(List<Long> ids);
void deleteAll(Integer[] ids); // 数组
}
// Mabits
<select id="deleteAllByIdIn">
delete from sys_role where "INT_ID" in
<foreach collection="list" open="(" close=")" separator="," item="id">
#{id}
</foreach>
// or
<foreach collection="array" open="(" close=")" separator="," item="id">
#{id}
</foreach>
</select>