gpt4 book ai didi

java - 使用mybatis注解获取嵌套对象

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:59:42 24 4
gpt4 key购买 nike

我有一个这样的POJO

class foo
{
private String id;
private String attribute;
private Map<String, String> dataMap;
}

我的数据模型是

Table Item
- INT id
- CHAR attribute

//将dataMap存储为键值对

Table Data
- INT id
- CHAR key
- CHAR value

现在,我想合并以下 2 个查询

第一个查询:

@Select("select * from Item where attribute=#{attribute}"
public List<Item> getItemList(@Param("attribute") String attribute);

获取给定 id 的所有键值对的另一个查询

如何进行单个查询,给定属性,获取 id 列表并填充嵌套对象(dataMap)

//经历过@Results, @Result ..

最佳答案

这种情况在 myBatis 中可以通过两种方式解决:

  • 嵌套选​​择 - 您检索项目列表,并为每个项目运行单独的选择以获取数据;
  • 嵌套结果 - 您通过运行单个连接查询来检索具有关联数据的项目,并让 myBatis 处理结果中的重复子集;

第一个选项对性能非常不利,会导致所谓的“n+1 选择问题”。第二种是执行此类操作的首选方法。

MyBatis User guide包含一个使用嵌套结果的示例,但它用于 XML 配置。 Java 注释有一些限制,但理论上应该可以做到(我从未尝试过 id,因为我不喜欢在 Java 代码中进行选择,但以下文章提供了一些有用的信息:IBatis (MyBatis): Handling Joins: Advanced Result Mapping, Association, Collections, N+1 Select Problem)。

关于java - 使用mybatis注解获取嵌套对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10331215/

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