.xml文件中如何进行子查询

.xml文件中如何进行子查询

参考文献:MyBatis 中使用 Collection 嵌套查询
子查询写法_其一
对应TastCommonEntity

<resultMap id="BaseResultMap" type="com.aima.service.taskmanager.entity.TastCommonEntity">
        <id column="stationId" jdbcType="VARCHAR" property="stationId"/>
        <id column="lineid" jdbcType="VARCHAR" property="lineid"/>
        <result column="taskcode" jdbcType="VARCHAR" property="taskcode"/>
        <result column="createtime" jdbcType="TIMESTAMP" property="createtime"/>
		...
		
        <collection column="taskcode" property="casePro" ofType="com.aima.service.taskmanager.entity.MissionCaseEntity"
                    select="selectConstable" javaType="java.util.ArrayList">

        </collection>
        <collection column="taskcode" property="staffPro"  ofType="com.aima.service.taskmanager.entity.MissionStaffEntity"
                    select="selectStaff" javaType="java.util.ArrayList">
                     
        </collection>
</resultMap>

主要是 select=" " 这块必须跟下面查询的id对应,要不然找不到

对应MissionStaffEntity

<resultMap id="BaseResultMapStaff" type="com.aima.service.taskmanager.entity.MissionStaffEntity">
        <id column="staffid" jdbcType="VARCHAR" property="id"/>
        <result column="staffid" jdbcType="VARCHAR" property="id"/>
        ...
</resultMap>

对应MissionCaseEntity

<resultMap id="BaseResultMapCase" type="com.aima.service.taskmanager.entity.MissionCaseEntity">
        <result column="caseid" jdbcType="VARCHAR" property="id"/>
        <result column="casecode" jdbcType="VARCHAR" property="code"/>
        <result column="casename" jdbcType="VARCHAR" property="name"/>
        <result column="casesex" jdbcType="VARCHAR" property="sex"/>
        ....
</resultMap>

第一个查询

<select id="selectStationPreview" parameterType="com.aima.service.taskmanager.entity.TastCommonEntity" resultType="com.aima.service.taskmanager.entity.TastCommonEntity"
            resultMap="BaseResultMap">
        select
            *
        FROM 
        	mission_sta t
        where t.taskcode = #{taskcode,jdbcType=VARCHAR}
    </select>

子查询一

    <select id="selectStaff" resultMap="BaseResultMapStaff" resultType="com.aima.service.taskmanager.entity.MissionStaffEntity"
            parameterType="com.aima.service.taskmanager.entity.MissionStaffEntity">
        select 
            *
        from 
        	missionStaff ms
      	where ms.taskcode = #{taskcode,jdbcType=VARCHAR}
    </select>

子查询二

    <select id="selectCase" resultMap="BaseResultMapCase" resultType="com.aima.service.taskmanager.entity.MissionCaseEntity"
            parameterType="com.aima.service.taskmanager.entity.MissionCaseEntity">
        select 
        	*  
        from 
        	missionCase mc
    	where mc.taskcode = #{taskcode,jdbcType=VARCHAR}
    </select>

查询过程是主要查询,子查询一,子查询二

  1. taskcode是前面传过来的,用于主要查询的where条件使用
  2. 子查询一中 column=“taskcode” 将值带过来 用于 子查询的where条件使用
  3. 子查询二中 column=“taskcode” 将值带过来 用于 子查询的where条件使用

自己理解的,本人使用正常,如有错误欢迎指正,如有问题欢迎留言!! by java小白

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yizhi-w

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值