多种组成的bean或作为接口的bean

时间:2018-07-06 08:35:03

标签: java java-ee design-patterns mybatis ibatis

在我的公司中,我们有表,这些表的bean,以及使用这些bean作为输出和那些表作为输入的SQL请求(iBatis,myBatis,..)。

像往常一样,我为应用程序中使用的每个表创建一个实体bean。

但是,例如,在一个SQL请求使用7个表的地方,我需要创建7个bean的组合。而且,如果另一个请求正在使用4个不同的表,则必须创建另一个由4个bean组成的组合。

现在,我想知道在应用程序的请求中是否需要与多个表元组一样多的组成。

我考虑将bean作为解决此问题的接口,但似乎不可能。

问题示例:

表客户,汽车,客户汽车,零售商,客户零售商......

在哪里选择客户名称,零售商名称,汽车名称...

要处理这些实体的请求输出:

public CustomerRetailerCar {

    private Customer customer;
    private Car car;
    private Retailer retailer;

}

因此,我最终撰写了很多作品,我感到我没有以正确的方式解决此问题。我错了吗?

任何建议表示赞赏。

1 个答案:

答案 0 :(得分:0)

似乎实体之间的关联未在您的域模型中表达(或至少在从数据库映射时未使用)。

也就是说,如果每个Customer都有一个Car,那么Customer bean中应该有一个字段,如:

private Car car

如果Customer可能有多辆车,那么该字段应该是Car的集合。

Customer <-> Retailer关联相同。

在这种情况下,当您需要返回具有相关汽车和零售商的客户时,就不需要创建新类别。映射器应返回设置了Customercar字段的现有retailer对象。

例如,如何在mybatis中将其映射到examples in documentation