mybatis四表联合查询

本文详细解析了MyBatis中四表联合查询的实现方法,包括如何定义resultMap映射复杂对象关系,以及如何通过左连接(left join)进行数据关联,以实现产品详细信息的全面检索。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

<!-- 四表联合查询 -->
<resultMap type="com.dxn.dxnproject.vo.ProductDetailVo" id="spuInfo">
    <result column="spu_id" property="spuId"/>
    <result column="spu_name" property="spuName"/>
    <result column="spu_unique_code" property="spuUniqueCode"/>
    <result column="spu_description" property="spuDescription"/>
    <result column="spu_price" property="spuPrice"/>
    <result column="spu_supply_period" property="spuSupplyPeriod"/>
    <result column="spu_quality_period" property="spuQualityPeriod"/>
    <result column="spu_image" property="spuImage"/>
    <result column="spu_document" property="spuDocument"/>
    <result column="spu_online_status" property="spuOnlineStatus"/>
    <result column="spu_create_time" property="spuCreateTime"/>
    <result column="spu_update_time" property="spuUpdateTime"/>
    <collection property="paraTypeVoList" ofType="com.dxn.dxnproject.vo.ParaTypeVo">
        <result column="para_type_id" property="paraTypeId"/>
        <result column="spu_id" property="spuId"/>
        <result column="para_type_name" property="paraTypeName"/>
        <result column="para_type_name_description" property="paraTypeNameDescription"/>
        <result column="para_type_create_time" property="paraTypeCreateTime"/>
        <result column="para_type_update_time" property="paraTypeUpdateTime"/>
        <collection property="paraDataVoList" ofType="com.dxn.dxnproject.vo.ParaDataVo">
            <result column="para_data_id" property="paraDataId"/>
            <result column="para_data_name" property="paraDataName"/>
            <result column="para_data_code" property="paraDataCode"/>
            <result column="para_data_description" property="paraDataDescription"/>
            <result column="para_data_price" property="paraDataPrice"/>
            <result column="para_data_remark" property="paraDataRemark"/>
            <result column="para_type_id" property="paraTypeId"/>
            <result column="para_data_create_time" property="paraDataCreateTime"/>
            <result column="para_data_update_time" property="paraDataUpdateTime"/>
        </collection>
    </collection>
    <collection property="spuMutexVoList" ofType="com.dxn.dxnproject.vo.SpuMutexVo">
        <result column="spu_mutex_id" property="spuMutexId"/>
        <result column="spu_mutex_name" property="spuMutexName"/>
        <result column="spu_mutex_description" property="spuMutexDescription"/>
        <result column="spu_id" property="spuId"/>
    </collection>
</resultMap>


<select id="querySpuInfo" resultMap="spuInfo">
 select s.spu_id,s.spu_name,s.spu_unique_code,s.spu_description,s.spu_price,s.spu_supply_period,s.spu_quality_period,
 s.spu_image,s.spu_document,s.spu_online_status,s.spu_create_time,s.spu_update_time,
 pt.para_type_id,pt.spu_id,pt.para_type_name,pt.para_type_name_description,pt.para_type_create_time,pt.para_type_update_time,
 pd.para_data_id,pd.para_data_name,pd.para_data_code,pd.para_data_description,pd.para_data_price,pd.para_data_remark,pd.para_type_id,
 pd.para_data_create_time,pd.para_data_update_time,sm.spu_mutex_id,sm.spu_mutex_name,sm.spu_mutex_description,sm.spu_id
 from `spu` s
 left join `para_type` pt
 on s.spu_id = pt.spu_id
 left join `para_data` pd
 on pd.para_type_id = pt.para_type_id
 left join `spu_mutex` sm
 on s.spu_id = sm.spu_id
 where s.spu_id=#{spuId}
</select>
MyBatis中进行三联合查询可以通过创建视图或使用多连接来实现。 一种方法是创建一个视图,将所需的连接起来。例如,在创建一个名为doctor_work_duty的视图时,可以使用以下SQL语句: ```sql create view doctor_work_duty as (select * from hospital.doctor t1 inner join hospital.work t2 on t1.doc_work_id = t2.w_id inner join hospital.duty t3 on t1.doc_duty = t3.d_id); ``` 这样就可以在查询中使用这个视图来获取所需的数据。 另一种方法是使用多连接语句来达到三联合查询的目的。例如,可以使用以下SQL语句来实现用户和权限的联合查询: ```sql select u.username,u.`password`,a.authorityName from user u,authority a,user_relation ur where u.userId=ur.userId and a.authorityId=ur.authorityId; ``` 这将返回一个包含用户和权限信息的结果集。 在这种情况下,设计通常包括用户(User)、用户关系(UserRelation)、用户权限(Authority)和用户信息(UserInfo)。每个都有其特定的列和关系,可以根据需求进行设计和使用。 总结起来,MyBatis中进行三联合查询可以通过创建视图或使用多连接来实现。视图可以将多个连接在一起,并在查询中使用该视图。多连接可以在查询语句中直接进行之间的连接操作。具体使用哪种方法取决于实际需求和数据结构的设计。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [Mybatis连接查询](https://blog.youkuaiyun.com/m0_56750901/article/details/123899956)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [Mybatis的多查询使用](https://blog.youkuaiyun.com/weixin_45309354/article/details/123233534)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值