2012-08-01 31 views
0

我不知道做一个必须反映在类中关联的属性MyBatis的映射器协会反映在Java类

如果我使用选择了加入,然后创建一个映射为即

<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> 

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

回答

0

公司类将有三个字段,一个整数id,一个String名称和一个名为CompanyLevel的对象,在本例中为CompanyLevelId。 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更改为类似的水平公司类和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> 
+0

很棒!非常感谢! 我这样做,但它不会工作,现在我发现,在Netbeans,如果你用新名称重构propertys xhtml文件不会找到属性和罪恶,我没有得到任何调试信息,我看不到它。但是现在我剔除了propertys并重新添加了它们,效果更好。这个错误有可能重现。 再次感谢! – user1416776 2012-08-02 06:51:35