2016-05-17 94 views
0

我們有一個包含複合主鍵的mysql表。桌子拿着物品。 然後我們有itemId,itemName,itemType,lang,shortDescription,LongDescription和其他一些fields.The鍵是itemId和lang。這意味着ID爲1的商品可以重複使用英文和西班牙文,基於此我們有不同的短期和長期的描述。數據庫沒有被標準化,也不會被標準化。我爲Item寫了一個Java bean,如下所示:具有複合主鍵表的MyBattis映射器

public class Item { 
    private String itemId; 
    private String itemName; 
    private String itemType; 
    List<LangDescription> langdescriptions; 

    public String getItemId() { 
     return itemId; 
    } 

    public void setItemId(String itemId) { 
     this.itemId = itemId; 
    } 

    public String getItemName() { 
     return itemName; 
    } 

    public void setItemName(String itemName) { 
     this.itemName = itemName; 
    } 

    public String getItemType() { 
     return itemType; 
    } 

    public void setItemType(String itemType) { 
     this.itemType = itemType; 
    } 

    public List<LangDescription> getLangdescriptions() { 
     return langdescriptions; 
    } 

    public void setLangdescriptions(List<LangDescription> langdescriptions) { 
     this.langdescriptions = langdescriptions; 
    } 
} 

其中lang描述是另一個包含lang,shortDescription和LongDescription的Java bean。

現在我想使用MyBatis編寫一個映射器,從表中選擇列名與列名相同的所有行(itemId,itemType,lang,shortDescription,longDescription)並創建一個Items列表。

public interface CRMTermsAndConditionsMapper { 
    static final String SELECT_ITEMS = "SELECT * FROM items;"; 

    @Select(SELECT_ITEMS) 
    List<Item> selectItems(); 

} 

任何建議如何做到這一點?我應該使用TypeHandler還是使用Collectons和@Result註釋更好?

回答

0

由於您使用映射器接口,你應該使用@Many選擇註釋,

public interface CRMTermsAndConditionsMapper { 
    static final String SELECT_ITEMS = "SELECT * FROM items;"; 
    static final String SELECT_LANG_DESC = "SELECT * FROM lang_description;"; 

    @Select(SELECT_ITEMS) 
    @Results({ 
     @Result(property="langdescriptions",column="langdescriptions", 
       javaType=List.class,[email protected](select="getLangDescriptions")) 
    }) 
    List<Item> selectItems(); 

    @Select(SELECT_LANG_DESC) 
    public List<LangDescription> getLangDescriptions(); 

} 

更改SELECT_LANG_DESC查詢相應選擇郎描述。