寻找更好的方法来设计不同情况的课程

时间:2014-04-02 03:47:50

标签: mybatis

我在spring mvc web应用程序中使用mybatis 3.2.3和mysql 5.5。我正在寻找一些关于如何更好地解决以下情况的建议。

有时我需要获得完全填充的Vip对象以供显示。所以我会使用以下内容:

public class Vip {
    private A a1;
    private B b1;
    private C c1;
    private D d1;
    private E e1;

    // ignore other properties for now
}

<resultMap id="vipMap" type="Vip" >
    <id column="ID" property="id"  />
    <!-- ignore some properties here -->
    <collection property="a1" column="A_ID" ofType="A" select="A.getAById"/>
    <collection property="b1" column="B_ID" ofType="B" select="B.getBById"/>
    <collection property="c1" column="C_ID" ofType="C" select="C.getCById"/>
    <collection property="d1" column="D_ID" ofType="D" select="D.getDById"/>
    <collection property="e1" column="E_ID" ofType="E" select="E.getEById"/>
</resultMap>

但有时我只需要一个轻量级的Vip对象,其中包含每个属性的id(例如更新),因为A,B,C,D,E属性在JSP中呈现为下拉列表。在这种情况下,我更喜欢以下内容:

public class Vip {
    private Long idOfA;
    private Long idOfB;
    private Long idOfC;
    private Long idofD;
    private Long idOfE;

    // ignore other properties for now
}

<resultMap id="vipMap" type="Vip" >
    <id column="ID" property="id"  />
    <!-- ignore some properties here -->
    <result column="A_ID" property="idOfA" />
    <result column="B_ID" property="idOfB" />
    <result column="C_ID" property="idOfC" />
    <result column="D_ID" property="idOfD" />
    <result column="E_ID" property="idOfE" />
</resultMap>

似乎我需要保留两个resultMaps并合并Vip类的上述两个版本,以便我可以区别对待不同的情况。这种情况有更优雅的方式吗?感谢。

1 个答案:

答案 0 :(得分:0)

我想我会使用第一种方法和延迟加载。