隐式使用 DTO 字段的@RequestParam



Controller

@RequestMapping(method = RequestMethod.GET)
public ResponseEntity<PaginatedResponse<User>> getAllUsers(
@RequestParam(defaultValue = "") String q,
@RequestParam(defaultValue = "") String[] fields,
@RequestParam(defaultValue = "") String[] sort,
@RequestParam(defaultValue = "50") Integer limit,
@RequestParam(defaultValue = "0") Integer offset,
@RequestParam(defaultValue = "") String userField1,
@RequestParam(defaultValue = "") String userField2,
@RequestParam(defaultValue = "") Boolean userField3,
@RequestParam(defaultValue = "") ZonedDateTime userField4,
@RequestParam(defaultValue = "")  String userRoleId5,
@RequestParam(defaultValue = "")  Long userRoleId6,
@RequestParam(defaultValue = "")  Long userRoleId7
) {
//call to service
}

用户DTO

public class UserDTO {
private String userField1;
private String userField2;
private boolean userField3;
ZonedDateTime userField4;
@JsonProperty("USERFIELD5")
private String userField5;
@JsonProperty("USERFIELD6")
private Long userField6;
@JsonProperty("USERFIELD7")
private Long userField7;
//getters and setters
}

用户字段在 GET/users 参数中用于筛选响应中的用户列表。当前的代码有效,但我想知道是否有更好的方法来避免在控制器中手动定义字段。

我考虑使用 HahsMap 获取所有请求参数,但我选择退出,因为我需要检查传递的参数是否有效。

喜欢使用@ResponseBody

@ResponseBody
@RequestMapping(value = "your mapping here", method = RequestMethod.GET)
public List<User> getUsers() {

}

并使用 Jackson 或 GSON w/e 序列化您的用户实体属性

使用 gson,您可以序列化您的字段,例如

@SerializedName("user_id")
private Integer id;

最新更新