这个问题困扰了我一个多星期,本来简简单单的查询可能花几个小时就能轻松解决,就是因为mybatis的映射关系没有掌握牢固,导致时间大把大把的浪费掉了,在网上查阅了很多信息,基本上都是一个实体类对应一个集合,一对多的关系,并没有看到一个实体类存在多个list集合的情况,本人不才,看了mybatis的文档后依然没有完全理解,就抱着试一试的心态,进行了下一步。进入正题:我们都知道实体类中存在一个list集合,就如下:
<resultMap id="InsureMap" type="com.entry.insurance.PolicyOfInsurance" autoMapping="true">
<result column="policyHolderId" property="policyHolderIds"/>
<result column="insuredPersonId" property="insuredPersonIds"/>
<collection property="policyList" ofType="com.entry.insurance.PolicyHolder" autoMapping="true">
<result column="spid" property="id"/>
</collection>
</resultMap>
然后在查询代码中引用即可
<select id="selectInsure" resultMap="InsureMap">
SELECT
sp.id spid
FROM
SHOP_POLICYOFINSURANCE
where
sp.id = ‘1’
</select>
以上代码有删减,仅供参考,这里需要注意的是collection中的column=spid需要和下面查询语句中的字段要对应上,以次类推,如果存在多个list集合,情况如下:
<resultMap id="InsureMap" type="com.entry.insurance.PolicyOfInsurance" autoMapping="true">
<result column="policyHolderId" property="policyHolderIds"/>
<result column="insuredPersonId" property="insuredPersonIds"/>
<collection property="policyList" ofType="com.entry.insurance.PolicyHolder" autoMapping="true">
<result column="spid" property="id"/>
</collection>
<collection property="insuredList" ofType="com.entry.insurance.InsuredPerson" autoMapping="true">
<result column="siid" property="id"/>
<collection property="beneficiaryList" ofType="com.entry.insurance.Beneficiary" autoMapping="true">
<result column="sbid" property="id"/>
</collection>
<collection property="contactList" ofType="com.entry.insurance.EmergencyContact" autoMapping="true">
<result column="seid" property="id"/>
</collection>
<collection property="riskInfoList" ofType="com.entry.insurance.InsuranceType" autoMapping="true">
<result column="sipid" property="id"/>
</collection>
</collection>
</resultMap>
这里说一下情况,我在collection中嵌套了collection,目的是list集合中的实体类也存在多个list,切记一点就行,collection中的column=‘id’要与查询语句中的字段对应。在查询过程中还需要进行表的自连接或者左(右)连接。上述代码不全面,有需要进一步了解的,可以留言评论。
---------------------
作者:倚楼无言
来源:CSDN
原文:https://blog.csdn.net/Jyan8001/article/details/88789621
版权声明:本文为博主原创文章,转载请附上博文链接!