Ibatis中如何实现一对多关系?
假设我有这个类:
Class A {
int id;
int[] b;
// Other properties
}
Class B {
int id;
// Other properties
}
A 类与 B 类具有一对多关系。我已经有一个缓存 B 对象并在 id 上返回它们的服务。
表模式看起来像这样
Table a:
-------
int id,
prop1,
etc
Table a_to_b_map
----------------
int a_id,
int b_id
现在,我如何在 iBatis 中映射它?
由于B对象已经被缓存,我想将id列表获取到A对象中,然后使用该服务来丰富A。
有人可以建议如何去做吗?
我能想到的两种可能的替代方案是:
- 在 A (AtoB 映射)中创建一个内部类,并在 iBatis 配置中使用选择查询来填充它
- 在 iBatis resultMap/select 内部使用另一个选择来获取 B id 列表(不太确定)关于如何在配置中执行此操作)
Let's say I have this Class:
Class A {
int id;
int[] b;
// Other properties
}
Class B {
int id;
// Other properties
}
The Class A has one-to-many relation with class B. I already have a service which caches B objects and return them on id.
Table schema looks something like this
Table a:
-------
int id,
prop1,
etc
Table a_to_b_map
----------------
int a_id,
int b_id
Now, how do I map this in iBatis?
Since, B objects are already cached, I want to get the list of ids into A objects and then use the service to enrich As.
Can someone suggest how to go about it?
Two possible alternative I can think of are:
- Create an inner class in A (AtoB map) and use a select query in iBatis config to populate this
- Inside the iBatis resultMap/select use another select to get the list of B ids (not too sure on how to do this in config)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
在 mybatis 3 中,情况略有不同。 您可以通过指定两个 select 语句来完成此操作,也可以使用 join 然后使用集合标记创建 resultMap。
或者您可以使用 join
并执行结果映射,
您可以从此处的 ibatis 用户指南获取完整的教程:
http://svn.apache.org/repos/asf/ibatis/java/ibatis-3/trunk/doc/en/iBATIS- 3-用户指南.pdf
in mybatis 3 it's little bit different. You can do it by specify two select statement or you can use join then create resultMap with collection tag.
or you can use join
and do result map
you can get complete totorial from ibatis user guide here :
http://svn.apache.org/repos/asf/ibatis/java/ibatis-3/trunk/doc/en/iBATIS-3-User-Guide.pdf
不确定我是否正确理解了你的问题。
假设你要根据A的id进行查询,那么在ibatis中编写一个连接两个表的查询怎么样?
然后,您可以使用“queryForMap”返回 a_id 与(查询中的记录集合)的哈希图。 使用自定义方法将此数据结构转换为“A”的对象
Not sure if I have understood your question correctly.
Assuming you will query based on A's id, how about writing a query in ibatis that joins the two tables?
You can then use a 'queryForMap' to return a hashmap of a_id vs (collection of records from the query). Use a custom method to convert this data structure into an object of 'A'