MyBatis Mapper关联反映在java类中

时间:2012-08-01 14:20:34

标签: java associations mybatis

我想知道是否必须反映课程中的相关属性

如果我使用带有连接的select,然后创建一个映射器,即。

<resultMap type="Company.Company" id="companyResult"  >
    <result column="id"    property="id" />
    <result column="name"  property="name" />    
    <association property="CompanyLevelId" resultMap="LevelMap" />
</resultMap>

<resultMap id="LevelMap"   type="Company.CompanyLevel"  >
    <id     column="CompanyLevelId"    property="CompanyLevelId" />
    <result column="Operator"         property="Operator" />
    <result column="Level"            property="level" />
</resultMap>

我的公司课程会是什么样子? 我是否必须创建一个包含公司级别作为对象的新类?

1 个答案:

答案 0 :(得分:0)

Company类将有三个字段,一个整数id,一个String名称,以及一个名为CompanyLevelId的CompanyLevel对象。 CompanyLevel类还将有三个字段,CompanyLevelId,Operator和level。

该关联会将您的联接结果转换为LevelMap结果图定义的CompanyLevel对象。

因此,您的公司Java类应如下所示:

public class Company{
    int id;
    String name;
    CompanyLevel CompanyLevelId; //this name is defined by the 'property' attribute

    public Company(){
    }
    //getters and setters
}

CompanyLevel看起来像:

public class CompanyLevel{
    int CompanyLevelId;  //once again defined by 'property' attribute
    String Operator;
    int level;

    public CompanyLevel(){
    }
    //getters and setters
}

为了更清楚,我会将属性名称从CompanyLevelId更改为Company类的级别和CompanyLevel类的id,并为关联指定java类型。这将使它看起来像这样:

<resultMap type="Company.Company" id="companyResult"  >          
    <result column="id"    property="id" />          
    <result column="name"  property="name" />              
    <association property="level" resultMap="LevelMap" javaType="Company.Company" />          
</resultMap>          

<resultMap id="LevelMap"   type="Company.CompanyLevel"  >          
    <id     column="CompanyLevelId"    property="id" />          
    <result column="Operator"         property="operator" />          
    <result column="Level"            property="level" />          
</resultMap>