比如如下 有一个 Member ,会员表
然后有一个 Club ,俱乐部表
然后是他们俩的索引表
比如我要在查询的时候,想以会员 id ,查出一个会员的信息,以及他注册了哪些俱乐部,每个俱乐部的注册日期是什么。 这样的话, POJO 该怎么设计呢,索引表是设计成一个包含会员、俱乐部两个引用的类,然后查询出的是索引表对象的列表,还是有什么其他最佳实践呢?
1
zhx1991 2017-02-09 19:20:41 +08:00
简单讲就是三个类, 分别对应三张表
|
2
cs4814751 OP @zhx1991 比如说,我要查询这个会员注册了哪些俱乐部,注册时间是什么。那我在三个表连接查询的时候,生成的对象,应该是索引表映射成的对象的列表是嘛?
|
3
pelloz 2017-02-09 19:43:27 +08:00
你知道 Result_Maps 吗。这个应该可以解决你的问题。
http://www.mybatis.org/mybatis-3/zh/sqlmap-xml.html#Result_Maps |
4
cs4814751 OP @pelloz 我知道呀 我疑惑的就是多对多有个中间表,如果中间表除了联合主键还有属性的话,那么 POJO 应该怎么设计合适。如果没有中间表的属性,我直接可以会员对象里,包含一个俱乐部的 List ,用 resultmap 映射正好。
|
6
cs4814751 OP @zhx1991 比如我用会员 ID 去查索引表,能查到对应的所有俱乐部 ID ,然后再挨个查俱乐部表?这样不是要多进行好多次查询吗?性能没有损失吗
|
7
coolzxbin 2017-02-10 10:49:37 +08:00
<select id="byID" resultType="ClubMember">
select a.id as rid,a.register_date,b.name as cname,c.name as mname from Club_Member a,Club b,Member c where a.member_id = c.id and a.club_id = b.id and a.member_id = #{id} </select> class ClubMember { private int rid; private Date register_date; private String cname; private String mname; ..... } 如上一次即可查出 |
8
domty 2017-02-10 16:01:06 +08:00
自设结果集,查询用连接即可。
需要你自己在 xml 定义一个新的 resultMap 和一个查询。 |