java为实体类的成员变量设置默认值
问题背景
最近在使用mybatis写分页的时候,封装了一个PageVO
用来接收前台传来的分页信息,但是这样的话,每次都需要传递分页的信息比较麻烦,就想着是否可以为分页信息设置默认值,比如默认当前页是0,每页显示20条数据。
PageVO
import lombok.Data;
@Data
public class PageVO {
/** 当前页 */
private Integer currentPage;
/** 当前页显示数据的条数 */
private Integer rows;
/** 排序方式 */
private String sort;
}
解决
可以给成员变量的get方法设置默认值(如果为null
或者""
,设置默认属性)
以rows
为例,如果rows
为null
或者""
,设置每页显示20条
public Integer getRows() {
return rows = "".equals(rows) || rows ==null ? 20 : rows;
}
修改后的代码
import lombok.Data;
@Data
public class PageVO {
/** 当前页 */
private Integer currentPage;
/** 当前页显示数据的条数 */
private Integer rows;
/** 排序方式 */
private String sort;
public Integer getCurrentPage() {
return currentPage = "".equals(currentPage) || currentPage ==null ? 0 : currentPage;
}
public Integer getRows() {
return rows = "".equals(rows) || rows ==null ? 20 : rows;
}
public String getSort() {
return sort;
}
}
当然,如果是SpringBoot项目也可以在application.yml
直接配置currentPage
和rows
的默认值,通过注解@Value
设置默认值。
在controller使用
可以使用这样的方式,如果前台不传分页信息,也可以设置默认的分页信息
@GetMapping("/all/byTypeId")
public ResponseEntity<PageResultDTO<Blog>> queryBlogByType (
@ApiParam(name = "pageVo", value = "分页信息") PageVO pageVo,
@ApiParam(name = "typeId", value = "博客类型ID")@RequestParam(required = false) Integer typeId
) {
return ResponseEntity.ok(blogService.queryBlogByType(pageVo, typeId));
}
具体的分页业务处理,略…