resultMap里 <collection property="orderDetails" ofType="OrderDetail" column="id"> .... </collection> sql 大概这样 select ... from order left join order_detail on order.id=order_detail.order_id where ...
select * form A left join B on A.id=B.aId
用关联查询,left join on
select 主表字段 a,明细表字段 b from 主表 a left join 明细表 on a.字段1=b.字段1 and a.字段2=b.字段2 ;
废话少说,直接上代码,一看就懂<resultMap id="tableAInfoResult" type="tableAInfo"> <result property="id" column="questionId"/> <result property="res" column="res"/> <result property="delFlag" column="delFlag"/> <collection property="tableBList(实体tableAInfo的属性)" column="{delFlag=delFlag,questionId=questionId}" select="getTableBList" /> </resultMap><sql id="tableAColumns"> a.question_id AS id, a.res AS res, a.del_flag AS delFlag </sql><select id="get" resultType="tableAInfoResult" > SELECT <include refid="tableAColumns"/> FROM tableA a WHERE a.id = #{id} </select> <select id="getTableBList" parameterType="java.util.HashMap" resultType="实体路径.entity.TableB"> select b.id AS "id", b.res AS "res", b.del_flag AS "delFlag" FROM tableB b where b.del_flag = #{delFlag} AND b.question_id = #{questionId} ORDER BY b.question_no ASC </select>
如果是的话,用select ... from 表名 inner join 表名 on 条件语句 inner join 表名 on 条件语句...... 如果还有限制条件,以此类推下去
<collection property="orderDetails" ofType="OrderDetail" column="id">
....
</collection>
sql 大概这样
select ... from order left join order_detail
on order.id=order_detail.order_id
where ...
<result property="id" column="questionId"/>
<result property="res" column="res"/>
<result property="delFlag" column="delFlag"/>
<collection property="tableBList(实体tableAInfo的属性)" column="{delFlag=delFlag,questionId=questionId}" select="getTableBList" />
</resultMap><sql id="tableAColumns">
a.question_id AS id,
a.res AS res,
a.del_flag AS delFlag
</sql><select id="get" resultType="tableAInfoResult" >
SELECT
<include refid="tableAColumns"/>
FROM tableA a
WHERE a.id = #{id}
</select> <select id="getTableBList" parameterType="java.util.HashMap" resultType="实体路径.entity.TableB">
select
b.id AS "id",
b.res AS "res",
b.del_flag AS "delFlag"
FROM tableB b
where b.del_flag = #{delFlag}
AND b.question_id = #{questionId}
ORDER BY b.question_no ASC
</select>