日期:2014-05-20  浏览次数:20751 次

关于MyBatis resultMap 3个表关联,一张是中间表
假设有3个表
表A 有字段 id,a1,a2,a3其中id为主键,
又有表B 有字段 id,b1,b2,b3其中id为主键,
A跟B 直接没有关系,是通过一张关系表C 来进行关联的
C 有字段 id,A_id,B_id

现在 假设 A B的关系是 多对1的关系 假设
B表所对应的 实体类有这样的 List<A> aaa 的一个属性

用Batis resultMap 设置 查询B的时候 把关系的也查询出来。
如果可以,那要怎么写,最好有简单代码,或者例子,网上差不多的例子链接也可以。

mybatis resultMap java 关联

------解决方案--------------------
给你个例子
public class Disclosure
{
/**
 * DISCLOSURE_ID:爆料信息id
 */
private long id;
/**
 * 附件列表
 */
private List<Attachment> attachments;

}

	<resultMap id="disclosureMap"
type="xxxx.Disclosure">
<id property="id" column="DISCLOSURE_ID" />
<collection property="attachments" column="DISCLOSURE_ID"
ofType="xxx.Attachment"
select="xxx.DisAttachmentMapper.getAttachmentsByDisclosureId">
</collection>
</resultMap>

上面是对应disclosure类的resultMap
DisAttachmentMapper.getAttachmentsByDisclosureId
对应的mapper
	<resultMap id="attachmentMap" type="xxx.Attachment">
<result property="attachmentId" column="DISCL_ATT_ID" />
<result property="attachmentUrl" column="ATTACHMENT_URL" />
</resultMap>
<select id="getAttachmentsByDisclosureId" parameterType="long" resultMap="attachmentMap">
select DISCL_ATT_ID,ATTACHMENT_URL from DISCLOSURE_ATTACHMENT where DISCLOSURE_ID =#{disclosureId}
</select>

大概这样吧


------解决方案--------------------
引用:
引用:给你个例子
Java code?123456789101112public class Disclosure{    /**     * DISCLOSURE_ID:爆料信息id     */    private long id;    /**     * 附件列表     */    private List<Atta……

那就是第二个sql复杂一点罢了,第二个sql关联查询一下呗