我有这样的POJO
class foo
{
private String id;
private String attribute;
private Map<String, String> dataMap;
}
Run Code Online (Sandbox Code Playgroud)
我的数据模型是
Table Item
- INT id
- CHAR attribute
Run Code Online (Sandbox Code Playgroud)
//将dataMap存储为键值对
Table Data
- INT id
- CHAR key
- CHAR value
Run Code Online (Sandbox Code Playgroud)
现在,我想结合以下2个查询
第一查询:
@Select("select * from Item where attribute=#{attribute}"
public List<Item> getItemList(@Param("attribute") String attribute);
Run Code Online (Sandbox Code Playgroud)
获取给定id的所有键值对的另一个查询
如何获得单个查询,给定属性,获取id列表并填充嵌套对象(dataMap)
//经历过@Results,@ Result ..
这种情况可以通过两种方式在myBatis中解决:
第一个选项对性能非常不利,导致所谓的"n + 1选择问题".第二个是做这种事情的首选方式.
MyBatis用户指南包含使用嵌套结果的示例,但它用于XML配置.Java注释有一些限制但理论上应该可以这样做(我从未尝试过id,因为我不喜欢在Java代码中选择,但下面的文章提供了一些有用的信息:IBatis(MyBatis):处理联接:高级结果映射,关联,集合,N + 1选择问题).
| 归档时间: |
|
| 查看次数: |
6555 次 |
| 最近记录: |