如何获取与dto中的整数关联的名称值
how to get name value associated with integer in dto
我正在使用 java,例如,我有 2 tables staff
(id, name, status_id, company_id) 和company
(id, name),对应的实体长这样:
public class Staff {
private Integer id;
private String name;
private Integer statusId;
private Integer companyId;
private Company company;
}
public class Company {
private Integer id;
private String name;
private List<Staff> staffList;
}
对于 table 的 status_id
staff
、0 means New, 1 represents Active and 2 stands for Inactive
。
我需要在 html page/excel 上显示 New
、Active
或 Inactive
,而不是 0、1 或 2。
我有一个 StaffDto
:
public class StaffDto {
private Integer id;
private String name;
private Integer statusId;
private String companyName;
}
我的问题是:
statusName
(New/Active/Inactive)应该在StaffDto
,这样就不需要在每个客户端上根据statusId
计算status name
,对吧?
- 基于
statusId
获得 statusName
的最佳做法是什么?
我应该写这样的代码
public class StaffDto {
private Integer statusId;
private String statusName;
public String getStatusName() {
switch(statusId) {
case 0: return "New";
case 1: return "Active";
case 2: return "Inactive";
}
}
}
这是一个好习惯吗?或者其他东西(例如枚举)更好?
如果在StaffDto
中加入获取status name
的逻辑,如果还有一个dtoj(如ADto
)也需要显示[=24]怎么办=],那么我必须在 ADto
?
中重写这个逻辑
如果一个客户端需要显示New
、Active
或Inactive
,而另一个客户端需要显示A
、[=37怎么办? =] 或 C
或其他东西,那么我应该在 StaffDto
中 return 什么?我还是return New
, Active
or Inactive
in StaffDto
,其他客户端需要计算N
, A
or I
基于 statusId
他们的客户?或者我应该 return 给客户一些别的东西而不是 xxxDto?
我也会像你提到的那样选择 enum
,将状态代码绑定到名称
然后,您不必重写 DTO
中的逻辑,让您的模型具有 enum
而不是代码或名称
enum 可以有自己的方法,例如 getShortName
用于不同的表示
enum Status {
NEW(0), Active(1), InActive(2);
private final int code;
Status(int code) {
this.code = code;
}
public String getShortName() {
return this.name().substring(0, 1).toUpperCase();
}
public int getCode() {
return code;
}
}
我正在使用 java,例如,我有 2 tables staff
(id, name, status_id, company_id) 和company
(id, name),对应的实体长这样:
public class Staff {
private Integer id;
private String name;
private Integer statusId;
private Integer companyId;
private Company company;
}
public class Company {
private Integer id;
private String name;
private List<Staff> staffList;
}
对于 table 的 status_id
staff
、0 means New, 1 represents Active and 2 stands for Inactive
。
我需要在 html page/excel 上显示 New
、Active
或 Inactive
,而不是 0、1 或 2。
我有一个 StaffDto
:
public class StaffDto {
private Integer id;
private String name;
private Integer statusId;
private String companyName;
}
我的问题是:
statusName
(New/Active/Inactive)应该在StaffDto
,这样就不需要在每个客户端上根据statusId
计算status name
,对吧?- 基于
statusId
获得statusName
的最佳做法是什么? 我应该写这样的代码
public class StaffDto {
private Integer statusId;
private String statusName;
public String getStatusName() {
switch(statusId) {
case 0: return "New";
case 1: return "Active";
case 2: return "Inactive";
}
}
}
这是一个好习惯吗?或者其他东西(例如枚举)更好?
如果在
中重写这个逻辑StaffDto
中加入获取status name
的逻辑,如果还有一个dtoj(如ADto
)也需要显示[=24]怎么办=],那么我必须在ADto
?如果一个客户端需要显示
New
、Active
或Inactive
,而另一个客户端需要显示A
、[=37怎么办? =] 或C
或其他东西,那么我应该在StaffDto
中 return 什么?我还是returnNew
,Active
orInactive
inStaffDto
,其他客户端需要计算N
,A
orI
基于statusId
他们的客户?或者我应该 return 给客户一些别的东西而不是 xxxDto?
我也会像你提到的那样选择 enum
,将状态代码绑定到名称
然后,您不必重写 DTO
中的逻辑,让您的模型具有 enum
而不是代码或名称
enum 可以有自己的方法,例如 getShortName
用于不同的表示
enum Status {
NEW(0), Active(1), InActive(2);
private final int code;
Status(int code) {
this.code = code;
}
public String getShortName() {
return this.name().substring(0, 1).toUpperCase();
}
public int getCode() {
return code;
}
}