.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>
查询过程是主要查询,子查询一,子查询二
- taskcode是前面传过来的,用于主要查询的where条件使用
- 子查询一中 column=“taskcode” 将值带过来 用于 子查询的where条件使用
- 子查询二中 column=“taskcode” 将值带过来 用于 子查询的where条件使用
自己理解的,本人使用正常,如有错误欢迎指正,如有问题欢迎留言!! by java小白