Java一对多结构的封装方法

本文介绍了如何在Java中有效地封装一对多的数据结构,以AddLabourCostDetailReturnDto类为例,详细阐述了具体的实现方法和步骤。

封装方法:

public Collection<AddLabourCostDetailReturnDto> echoData(String userId) {

    List<AddLabourCostDetailDto> list = compactDao.echoData(userId);

    if (list.size() == 0) {
        return Collections.EMPTY_LIST;
    }

    Map<Integer, AddLabourCostDetailReturnDto> map = new HashMap();

    for (AddLabourCostDetailDto dto : list) {
        AddLabourCostDetailReturnDto rdto = map.get(dto.getEnterpriseId());
        if (ValidateUtil.objectIsNull(rdto)) {
            rdto = new AddLabourCostDetailReturnDto();
            rdto.setEnterpriseName(dto.getEnterpriseName());
            rdto.setEnterpriseId(dto.getEnterpriseId());
            List<AddLabourCostDetailProjectsDto> projects = new ArrayList<>();
            rdto.setProjects(projects);
            map.put(dto.getEnterpriseId(),rdto);
        }
        rdto.getProjects().add(new AddLabourCostDetailProjectsDto(dto.getProjectId(),dto.getProjectName()));
    }

    Collection<AddLabourCostDetailReturnDto> enterprises = map.values();
    return enterprises;
}


一、AddLabourCostDetailReturnDto 类(最终要的结构)

public class AddLabourCostDetailReturnDto {
    private Integer enterpriseId;
    private String enterpriseName;
    private List<AddLabourCostDetailProjectsDto> projects;

    public Integer getEnterpriseId() {
        return enterpriseId;
    }

    public void setEnterpriseId(Integer enterpriseId) {
        this.enterpriseId = enterpriseId;
    }

    public String getEnterpriseName() {
        return enterpriseName;
    }

    public void setEnterpriseName(String enterpriseName) {
        this.enterpriseName = enterpriseName;
    }

    public List<AddLabourCostDetailProjectsDto> getProjects() {
        return projects;
    }

    public void setProjects(List<AddLabourCostDetailProjectsDto> projects) {
        this.projects = projects;
    }
}


二、 AddLabourCostDetailDto 类(数据库查出的结构)
public class AddLabourCostDetailDto {
    private Integer enterpriseId;
    private String enterpriseName;
    private Integer projectId;
    private String projectName;

    public Integer getEnterpriseId() {
        return enterpriseId;
    }

    public void setEnterpriseId(Integer enterpriseId) {
        this.enterpriseId = enterpriseId;
    }

    public String getEnterpriseName() {
        return enterpriseName;
    }

    public void setEnterpriseName(String enterpriseName) {
        this.enterpriseName = enterpriseName;
    }

    public Integer getProjectId() {
        return projectId;
    }

    public void setProjectId(Integer projectId) {
        this.projectId = projectId;
    }

    public String getProjectName() {
        return projectName;
    }

    public void setProjectName(String projectName) {
        this.projectName = projectName;
    }
}
三、 AddLabourCostDetailProjectsDto 类
public class AddLabourCostDetailProjectsDto {
    private Integer projectId;
    private String projectName;

    public AddLabourCostDetailProjectsDto(){}

    public AddLabourCostDetailProjectsDto(Integer projectId, String projectName) {
        this.projectId = projectId;
        this.projectName = projectName;
    }

    public Integer getProjectId() {
        return projectId;
    }

    public void setProjectId(Integer projectId) {
        this.projectId = projectId;
    }

    public String getProjectName() {
        return projectName;
    }

    public void setProjectName(String projectName) {
        this.projectName = projectName;
    }
}


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值