mybatis的collection标签可以将主键一致的一对多的源数据映射为一对一的数据集
例如查询用户的设备,一个用户可能存在多个设备, 源数据是一对多的多行数据
而我们需要的仅仅是一对一的单行数据
此时可以考虑使用collection标签进行映射
- collection标签的JavaType表示的是该集合的类型是ArrayList
- ofType表示其泛型【不加ofType可能导致映射失败】
通过上面的映射可以得到一个List<Map<String, Object>> 的结果
将username和phonenames作为每个map的key, 而同一个用户的不同手机放到一个集合中.
不同用户作为不同的map
当然了,如果是多个字段需要映射到一个集合中的话
可以考虑使用一个Java类来接收数据
<resultMap id="BaseResultMap" type="UserDto" >
<id column="id" property="id"/>
<result column="username" property="username"/>
<result column="address" property="address"/>
<collection property="options" javaType="ArrayList" ofType="PhoneDto">
<id column="id" property="phone_id"/>
<result column="phonename" property="phonename"/>
<result column="description" property="description"/>
</collection>
</resultMap>