mybatis collection select用法
时间: 2023-11-14 15:06:50 浏览: 275
在使用MyBatis的collection标签进行select查询时,有两种常见的用法。
第一种用法是关联查询,通过在resultMap中使用collection标签将两个表关联起来。在查询语句中使用嵌套select查询,以获取需要的数据。具体的配置如下:
```xml
<resultMap type="A类路径" id="itemNew">
<id column="id" property="a_id"/>
<result column="value" property="a_value"/>
<collection column="{aId=a_id}" property="与A类字段名一致" ofType="B类路径" select="getList"/>
</resultMap>
<select id="getListNew(与dao中方法名保持一致)" parameterType="类路径" resultMap="itemNew">
select a.id a_id ,a.value a_value from table_a a
</select>
<resultMap type="类路径" id="itemList">
<result column="id" property="b_id"/>
<result column="value" property="b_value"/>
</resultMap>
<select id="getList(与上面select标签值保持一致)" resultMap="itemList">
select b.id b_id , b.value b_value from table_b b where b.aid = #{aId}
</select>
```
第二种用法是一个SQL查询出所有需要的数据。在resultMap中使用collection标签将两个表关联起来,通过指定一个字段作为关联条件。具体的配置如下:
```xml
<resultMap type="A类路径" id="item">
<id column="id" property="id"/>
<result column="value" property="value"/>
<collection column="id" property="与A类路径字段名一致" ofType="B类路径">
<result column="id" property="b_id"/>
<result column="value" property="b_value"/>
</collection>
</resultMap>
```
其中,column="{aId=a_id}"用于传值给子collection,如果需要传多个参数,可以用逗号隔开,例如column="{aId=a_id,e=e}"。<span class="em">1</span><span class="em">2</span><span class="em">3</span><span class="em">4</span>
阅读全文