|
笔记:
使用mybatis查询一列表,结果为List<Map<String,Object>>,列表内Map又包含一个列表.
使用mybatis查询的话,大致就是下边这个样子。
注:结果中的fId、ids需唯一
<!-- 主查询 -->
<select id="name" parameterType="Map" resultMap="ResultMap">
select t.id as `id`,
t.fId as `fId`,
t.id as `ids`,
t.name as `name`
from test t
</select>
<!-- 封装查询结果 -->
<resultMap id="ResultMap" type="Map" >
<collection property="list1" column="fId" javaType="ArrayList" select="name1"/>
<collection property="list2" column="ids" javaType="ArrayList" select="name2"/>
</resultMap>
<!-- 子查询列表1 -->
<select id="name1" parameterType="String" resultType="Map">
select t.id as `id`,
t.name as `name`
from test1 t
<trim prefix="WHERE" prefixOverrides="AND|OR">
<if test="value != null">
and t.fId = #{value}
</if>
</trim>
</select>
<!-- 子查询列表2 -->
<select id="name2" parameterType="String" resultType="Map">
select t.id as `id`,
t.name as `name`
from test2 t
<trim prefix="WHERE" prefixOverrides="AND|OR">
<if test="value != null">
and t.id = #{value}
</if>
</trim>
</select>
查询结果为:List-->
Map-->
id
list1-->
Map-->
id
name
list2-->
Map-->
id
name
name
Map-->....
.... |
|
|