2012-08-01 32 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