关于mybatis中一个实体类对应多个list集合且,list集合中的泛型实体类中仍然存在多个list集合写法


这个问题困扰了我一个多星期,本来简简单单的查询可能花几个小时就能轻松解决,就是因为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
版权声明:本文为博主原创文章,转载请附上博文链接!


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM