gpt4 book ai didi

java - 用于具有复合主键的表的 MyBatis 映射器

转载 作者:行者123 更新时间:2023-11-29 21:00:32 24 4
gpt4 key购买 nike

我们有一个带有复合主键的 mysql 表。 table 上放着元素。然后我们有 itemId、itemName、itemType、lang、shortDescription、LongDescription 和其他一些字段。键是 itemId 和 lang。这意味着 ID 为 1 的项目可以在英语和西类牙语中重复,基于此,我们有不同的短描述和长描述。数据库未标准化,也不会标准化。我为 Item 编写了一个 Java bean,如下所示:

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 编写一个映射器,从表 Item 中选择列名与字段名(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 注释更好?

最佳答案

由于您使用的是映射器接口(interface),因此应该使用@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,many=@Many(select="getLangDescriptions"))
})
List<Item> selectItems();

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

}

相应地更改 SELECT_LANG_DESC 查询以选择语言描述。

关于java - 用于具有复合主键的表的 MyBatis 映射器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37269561/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com