java中VO的使用(VO视图对象)

概念 VO(View Object)

场景1

当前端展示页面展示的更多关于用户的消息,如用户的角色Role,而User实体类中的信息不全

现在我们有一张用户列表t_user,对应的实体类如下:

import io.swagger.annotations.ApiModelProperty;

public class User {

    @ApiModelProperty(value = "用户id")
    private String userId;

    @ApiModelProperty(value = "用户名称")
    private String accountname;

    /**
     * 状态参考 UserStatus
     */
    @ApiModelProperty(value = "用户状态  1已认证,2 认证中,3未通过认证,7未提交认证")
    private Integer status;

    @ApiModelProperty(value = "头像地址")
    private String headPicFileName;

    @ApiModelProperty(value = "手机号")
    private String telephone;

    /**
     * 用户级别 0到期 1游客 2临时用户 3认证用户 参考health com.dachen.health.commons.vo.User
     */
    private Integer userLevel;

    @ApiModelProperty(value = "医生信息")
    private Doctor doctor;

}

我们通过创建一个类通过 UserVO extends User 的方式获取更多

public class CircleUserVO extends User{

    @ApiModelProperty(value = "在该圈子的角色1:管理员 2:圈主(负责人)3:顾问 逗号拼接 多个角色 可同时为管理员,圈主,顾问")
    private String role;

    @ApiModelProperty(value = "0否 1是 永久免费")
    private Integer permanentFree;

    @ApiModelProperty(value = "1正常 2欠费")
    private Integer arrearageStatus;

    。。。。

}

场景二

当前端提交给后台的数据很有限或者很少时,如注册页面提供的信息一般在4个字段左右,而通常的User实体类会有大量的字段需要填充

public class CircleUserVO {

    @ApiModelProperty(value = "手机号")
    private String telephone;

    @ApiModelProperty(value = "用户名称")
    private String accountname;

    @ApiModelProperty(value = "用户密码")
    private String password;

}

1