Enum枚举前后端传输展示方案
1、定义枚举类型
public enum RolesTypeEnum implements Enumerator {
MANAGER("管理员", 0),
BUSINESS("招商员工", 1),
PROPERTY("物业员工", 2),
FINANCE("财务员工", 3),
EMPLOYEE("普通员工", 4),
ENTERPRISE("企业员工", 5);
@JsonValue
private String desc;
@EnumValue
private Integer code;
RolesTypeEnum(String desc, Integer code) {
this.desc = desc;
this.code = code;
}
public String getDesc() {
return desc;
}
public void setDesc(String desc) {
this.desc = desc;
}
@Override
public Integer getCode() {
return code;
}
public void setCode(Integer code) {
this.code = code;
}
}
注意:枚举需实现Enumerator 接口 且使用 @JsonValue 和@EnumValue 注解
3、表对应的实体类
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("sys_role")
@ApiModel(value="系统角色对象", description="系统角色表")
public class RoleEntity extends BaseEntity {
private static final long serialVersionUID = 6671763345245442206L;
/**
* 系统角色代码
*/
@ApiModelProperty(value = "系统角色代码")
@TableField("ROLE_CODE")
private String roleCode;
/**
* 系统角色名称
*/
@ApiModelProperty(value = "系统角色名称")
@TableField("ROLE_NAME")
private String roleName;
/**
* 系统角色描述
*/
@ApiModelProperty(value = "系统角色描述")
@TableField("ROLE_DESC")
private String roleDesc;
/**
* 角色类型
*/
@ApiModelProperty(value = "角色类型")
@TableField("ROLES_TYPE")
private RolesTypeEnum rolesType;
}
2、新增编辑传输对象
@Data
@ApiModel(value="系统角色编辑传输对象", description="系统角色编辑传输对象")
public class RoleSaveDto implements Serializable {
/**
* 主键ID
*/
@ApiModelProperty(value = "主键ID")
@JSONField(serializeUsing = ToStringSerializer.class)
private Long id;
/**
* 角色名称
*/
@ApiModelProperty(value = "角色名称")
@NotBlank(message = "角色名称不能为空")
private String roleName;
/**
* 角色描述
*/
@ApiModelProperty(value = "角色描述")
@NotBlank(message = "角色描述不能为空")
private String roleDesc;
/**
* 角色类型
*/
@ApiModelProperty(value = "角色类型 (类型:com.xxx.enums.RolesTypeEnum)")
@NotNull(message = "角色类型不能为空")
@JsonDeserialize(using = JacksonEnumConverter.class)
private RolesTypeEnum rolesType;
}
3、前端查询需要的枚举类型
@ApiOperation(value = "根据数据类型查询枚举类型", notes = "根据数据类型查询枚举类型")
@RequestMapping(value = "findOfEnum", method = RequestMethod.GET)
public ResultVo<List<DictDataVo>> listOfEnum(@ApiParam(value = "类型", required = true)
@RequestParam String enumName) throws Exception {
List<DictDataVo> result = new ArrayList<>();
// 获取所有常量
Object[] objects = Class.forName(enumName).getEnumConstants();
//获取指定方法
Method coinAddressName = c.getMethod("getDesc");
Method coinAddressCode = c.getMethod("getCode");
for (Object obj : objects) {
DictDataVo vo = new DictDataVo();
vo.setId(Long.parseLong(coinAddressCode.invoke(obj).toString()));
vo.setParamName(coinAddressName.invoke(obj).toString());
result.add(vo);
}
List<DictDataVo> result = getDictDataVo(Class.forName(enumName));
return ResultVo.success(result);
}
4、后端返回视图对象
@Data
@ApiModel(value="角色分页视图对象", description="角色分页视图对象")
public class RolePageVo implements Serializable {
private static final long serialVersionUID = -2014879475982660328L;
/**
* 主键ID
*/
@ApiModelProperty(value = "主键ID")
@JSONField(serializeUsing = ToStringSerializer.class)
private Long id;
/**
* 系统角色名称
*/
@ApiModelProperty(value = "系统角色名称")
private String roleName;
/**
* 系统角色描述
*/
@ApiModelProperty(value = "系统角色描述")
private String roleDesc;
/**
* 角色类型
*/
@ApiModelProperty(value = "角色类型")
private RolesTypeEnum rolesType;
/**
* 创建时间
*/
@ApiModelProperty(value = "创建时间")
private LocalDateTime createDate;
/**
* 创建者
*/
@ApiModelProperty(value = "创建人")
private String createUserName;
}
注意:返回需要的类型使用定义的枚举类
版权声明:本文为WXF_Sir原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
THE END