实际业务中经常会面对一对多查询,但是我一直不会,知道看到了 macrozheng的mall项目才知道。果然还是应该多看别人的源码以此来开阔视野。
第一步,在xml中创建一个返回类型,返回类型中有3中表达方式对应三种情况
<resultMap
id="updateInfoMap"
type="返回的java类型"
extends="返回java类型的继承类">
<result column="自定义查询结果行" property="自定义查询结果的属性名" />
<collection
property="一对多中的多,所对应的java中的属性名"
columnPrefix="自定义查询列的前缀_"
resultMap="属性所对应的mapper所在java路径.xml类型文件对应中resultMap的id">
</collection>
<collection
property="一对多中的多,所对应的java中的属性名"
column="{ex_Id=id}"
select="当前mapper中所对应的子查询id"/>
</resultMap>
第二步,创建返回类型中的查询语句
<select
id="第一步中返回类型对应的id"
resultMap="返回类型所对应的mapper的java.返回类型所对应的xml中的resultMap">
select * from a where a.id=#{ex_Id}
</select>
第三步,新建查询语句
<!-- 自定义分页 -->
<select id="getInfoExById" resultMap="updateInfoMap">
a.*
b.id 自定义查询列的前缀_id
FROM t_a a
LEFT JOIN t_b b on b.id = a.b_id
WHERE t.id=#{id}
</select>
|