关于javaBean很多时候javaBean只是用来对应数据库字段,但是这样做还是不实用,而且也不是很符合DDD的思路,其实很多时候 我们都被固定的MVC模式限制了想法,其实按照领域驱动设计的思维,一个领域对象应该包含领域的属性和方法。不单纯的作为一个值对象存在。
在实际的业务编程中javaBean可以做一些适当的改写来提供更多实际的功能
下面给出一个发送微信订阅消息的javaBean的例子
1、在javaBean中定义了属于模板的枚举状态,把枚举状态归属于javaBean本身比单独放在其他包下意图更加明确
2、改变setStatus() 的赋值行为,在父类DTO中存入status对应的中文解释,方便视图层展示。
/**
* @author
* @description 微信模板消息
* @date 2020-01-01 10:57
*/
public class ShopWxtemplateMsg extends EntityDTO {
@Extend
private static final long serialVersionUID = 1L;
/**
* 主键
*/
private Integer id;
/**
* 编码
*/
private Integer code;
/**
* 模板名称
*/
private String name;
/**
* 模板id
*/
private String uuid;
/**
* 模板状态1,启用,2禁用
*/
private Integer status;
/**
* 模板备注
*/
private String remark;
/**
* 所属公司ID
*/
private String companyId;
public enum STATUS {
ENABLE("启用", 1),
DISABLE("禁用", 2);
private STATUS(String name, int code) {
this.name = name;
this.code = code;
}
private String name;
private Integer code;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getCode() {
return code;
}
public void setCode(Integer code) {
this.code = code;
}
}
public void buildDicMap(Object value) {
if (value != null) {
STATUS[] statusArray = STATUS.values();
for (STATUS s : statusArray) {
if (s.getCode().equals(value)) {
getDicMap().put("status", s.getName());
}
}
}
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getUuid() {
return uuid;
}
public void setUuid(String uuid) {
this.uuid = uuid;
}
public Integer getStatus() {
return status;
}
public void setStatus(Integer status) {
buildDicMap(status);
this.status = status;
}
public Integer getCode() {
return code;
}
public void setCode(Integer code) {
this.code = code;
}
public String getRemark() {
return remark;
}
public void setRemark(String remark) {
this.remark = remark;
}
public String getCompanyId() {
return companyId;
}
public void setCompanyId(String companyId) {
this.companyId = companyId;
}
}
/**
* bean对象的基类
*
* @author JIANGYOUYAO
* @email 935090232@qq.com
* @date 2017年11月30日
*/
public class EntityDTO implements Serializable{
@Extend
private static final long serialVersionUID = 1L;
private String createBy;
private Date createTime;
private String updateBy;
private Date updateTime;
private HashMap<String, Object> dicMap = new HashMap<>();
public HashMap<String, Object> getDicMap() {
return dicMap;
}
public void setDicMap(HashMap<String, Object> dicMap) {
this.dicMap = dicMap;
}
public String getCreateBy() {
return createBy;
}
public void setCreateBy(String createBy) {
this.createBy = createBy;
}
public Date getCreateTime() {
return createTime;
}
public void setCreateTime(Date createTime) {
this.createTime = createTime;
}
public String getUpdateBy() {
return updateBy;
}
public void setUpdateBy(String updateBy) {
this.updateBy = updateBy;
}
public Date getUpdateTime() {
return updateTime;
}
public void setUpdateTime(Date updateTime) {
this.updateTime = updateTime;
}
@Override
public String toString() {
String objMsg = "[" + this.getClass().getSimpleName() + "]=" + JSONObject.fromObject(this).toString();
return objMsg;
}
}