一、如果以下面这样接口参数的方式传参,可以通过@RequestParam注解来设置默认值:例如:@RequestParam(defaultValue = "10")
URL Query String传参 | /articles?id=12 | @RequestParam |
Body 传参 | Content-Type: multipart/form-data | @RequestParam |
二、实体参数默认值设置
在实体类使用中,直接使用@value注解也可以配置属性值,但是不是默认值,需要我们调用
java 中对实体属性进行赋默认值有4种方式:
- 声明实例属性时设置初始化
- 利用实例初始化代码块赋值
- 构造方法赋值
- 其他方法赋值(set)不能通过此方式设置默认值,除非主动调用。
public class QueryConditionsDTO {
// 1.声明实例属性时设置初始化
private Integer pageNumber = 0;
private Integer pageSize = 30;
// 2.利用实例初始化代码块赋值
{
this.pageNumber = 0;
this.pageSize = 30;
}
// 3.构造方法赋值
public QueryConditionsDTO() {
this.pageNumber = 0;this.pageSize = 30;
}
public QueryConditionsDTO(Integer pageNumber, Integer pageSize) {
this.pageNumber = pageNumber;this.pageSize = pageSize;
}
// 4.其他方法赋值
public void setPageNumber(Integer pageNumber) {this.pageNumber = pageNumber;}
public void setPageSize(Integer pageSize) {this.pageSize = pageSize;}
}
设置实体字段的默认值后,前端传递部分参数:
{
"strPar": "str",
"intPar": 0,
"datePar": 1609743896044
}
HttpClient 控制台输出:
POST http://127.0.0.1:8080/test/post_test2
HTTP/1.1 200
Content-Type: application/json
Transfer-Encoding: chunked
Date: Fri, 08 Jan 2021 01:55:18 GMT
Keep-Alive: timeout=60
Connection: keep-alive
{
"status": 1,
"message": "成功",
"ok": true,
"data": {
"strPar": "str",
"intPar": 0,
"datePar": "2021-01-04T07:04:56.044+00:00",
"pageNumber": 0,
"pageSize": 10
},
"fail": false
}
上面3种设置赋值默认值的方式都生效了,第四种未生效,除非我们在放方法种主动调用一次set方法,所以我们用前三种就好。
例如:这是第三种:
@Getter
@ToString
public class QueryConditionsDTO {
private String strPar;
private Integer intPar;
private Date datePar;
private Integer pageNumber;
private Integer pageSize;
public QueryConditionsDTO() {
System.out.println("NoArgumentConstructor");
this.pageNumber = 0;
this.pageSize = 10;
}
public void setPageNumber(Integer pageNumber) {
System.out.println("setPageNumber(Integer pageNumber)");
if(pageNumber != null && pageNumber >= 0){
this.pageNumber = pageNumber;
}
}
public void setPageSize(Integer pageSize) {
System.out.println("setPageSize(Integer pageSize)");
if(pageSize != null && pageSize > 0){
this.pageSize = pageSize;
}
}
// 略去部分Setter
}
代码逻辑流程: