collection关于表一对多时候的使用
有时候我们在查询数据库时,需要以查询结果为查询条件进行关联查询。
在mybatis 中通过 association 标签(一对一查询,collection 一对多 查询) 实现延迟加载子查询
例子如下:
<resultMap type="com.softetone.cloud.business.base.wechat.model.SysWechatMessageDtl" id="SysWechatMessageDtlMap">
<id property="fid" column="fid"/>
<result property="messageId" column="message_id"/>
<result property="templateId" column="template_id"/>
<result property="appId" column="app_id"/>
<result property="isDefault" column="is_default"/>
<result property="createId" column="create_id"/>
<result property="createTime" column="create_time"/>
<result property="updateId" column="update_id"/>
<result property="updateTime" column="update_time"/>
<collection property="wechatMessageOrgList" javaType="list" ofType="com.softetone.cloud.business.base.wechat.model.SysWechatMessageOrg" select="querySysWechatMessageOrgByMessageId"
column="fid">
<id property="fid" column="fid"/>
<result property="dtlId" column="dtl_id"/>
<result property="orgId" column="org_id"/>
<result property="createId" column="create_id"/>
<result property="createTime" column="create_time"/>
<result property="updateId" column="update_id"/>
<result property="updateTime" column="update_time"/>
</collection>
</resultMap>
column=“fid” 即是你传入 select=“querySysWechatMessageOrgByMessageId” 的参数列名
<!--查询消息下的组织-->
<select id="querySysWechatMessageOrgByMessageId" resultMap="SysWechatMessageOrgMap">
select a.fid,
a.dtl_id,
a.org_id,
b.org_name,
a.create_id,
a.create_time,
a.update_id,
a.update_time
from cloud_server.sys_wechat_message_org a
left join cloud_server.sys_org b on a.org_id = b.fid
where a.dtl_id = #{fid}
</select>
#{fid} 这里的 fid 要和 column=“fid” 列名保持一致才会正确