1、一个大对象中有一个小对象的集合。在查询大对象时,同时加载小对象集合。
eg:有一个大对象MailTaskInternalDTO,在MailTaskInternalDTO中有一个list,这个list中包含了小对象MailTaskParameterValueDTO。需求:查询符合条件的MailTaskInternalDTO列表。
MailTaskInternalDTO是一个邮件对象,包含了邮件标题、收件人、抄送人等,但这个邮件内容中有一些变量,这些变量存储在MailTaskParameterValueDTO中,在批量发送邮件时,替换邮件正文中的变量。现在可以用下面一条语句来完成。
a、<resultMap id="loadMailTaskResultMap" class="com.paic.nets.common.fm.mail.dto.MailTaskInternalDTO">
<result property="mailTaskId" column="MAIL_SEND_ID" />
<result property="mailTemplateId" column="MAIL_TEMPLATE_ID" />
<result property="receivers" column="RECEIVERS" />
<result property="copyTos" column="COPY_TO" />
<result property="status" column="STATUS"/>
<result property="parameterValDTOs" column="MAIL_SEND_ID" select="common.loadMailParameterVals"/>
</resultMap>
<resultMap id="mailTaskParamValDTOs" class="com.paic.nets.common.fm.mail.dto.MailTaskParameterValueDTO">
<result property="paramName" column="MAIL_PARAM_NAME" />
<result property="paramValue" column="MAIL_PARAM_VALUE" />
</resultMap>
b、
<select id="loadMailTaskByBatchID" parameterClass="java.lang.Long" resultMap="loadMailTaskResultMap">
SELECT Q.MAIL_SEND_ID, Q.MAIL_TEMPLATE_ID, Q.RECEIVERS, Q.COPY_TO, Q.STATUS FROM T_PC_MAIL_SEND_QUEUE Q WHERE Q.MAIL_BATCH_ID=#value#
</select>