如何在Ibatis中实现一对多关系?

Jag*_*mal 5 java ibatis one-to-many

假设我有这个类:


    Class A {
        int id;
        int[] b;
        // Other properties
    }

    Class B {
        int id;
        // Other properties
    }
Run Code Online (Sandbox Code Playgroud)

A类与B类有一对多的关系.我已经有了一个缓存B对象并在id上返回它们的服务.

表模式看起来像这样


    Table a:
    -------
      int id,
      prop1,
      etc

    Table a_to_b_map
    ----------------
      int a_id,
      int b_id

Run Code Online (Sandbox Code Playgroud)

现在,我如何在iBatis中映射这个?

因为B对象已经被缓存了,所以我希望将id列表放到A对象中,然后使用该服务来丰富As.

有人可以建议怎么做吗?

我能想到的两种可能的替代方案是:

  1. 在A(AtoB地图)中创建内部类,并在iBatis配置中使用选择查询来填充此内容
  2. 在iBatis resultMap/select中使用另一个select来获取B ID列表(不太确定如何在config中执行此操作)

Rah*_*hul 0

不确定我是否正确理解了你的问题。

假设你要根据A的id进行查询,那么在ibatis中编写一个连接两个表的查询怎么样?

select * 
from a, a_to_b_map 
where a.id = #id# and a.id = a_to_b_map.a_id
Run Code Online (Sandbox Code Playgroud)

然后,您可以使用“queryForMap”返回 a_id 与(查询中的记录集合)的哈希图。使用自定义方法将此数据结构转换为“A”的对象