业务中经常遇到一对多的场景,例如一名员工可能拥有多个职务。
@Data
public class UserInfo implements Serializable {private Long id;private String userCode;private String userName;private String sex;private String userPhone;/*** 该员工职务列表*/private List<PostInfo> postInfoList;
}
Mybatis提供了collection标签帮助我们简化这种一对多关系的查询。
resultMap中的collection标签可以对指定属性进行进一步封装。
- property:属性名称
- ofType:属性类型
- select:关联的查询方法
- column:关联字段
<resultMap id="userInfoResultMap" type="com.xxx.UserInfo"><id column="id" property="id" jdbcType="BIGINT"/><result column="user_code" property="userCode" jdbcType="VARCHAR"/><result column="user_name" property="userName" jdbcType="VARCHAR"/><result column="sex" property="sex" jdbcType="VARCHAR"/><result column="user_phone" property="userPhone" jdbcType="VARCHAR"/><collection property="postInfoList"ofType="com.xxx.PostInfo"select="com.xxx.UserPostInfoMapper.getPostByUserCode"column="user_code"/></resultMap><select id="getUserByUserCode" resultMap="userInfoResultMap">SELECTid,user_code,user_name,sex,user_phoneFROM t_user_base_infoWHERE user_code = #{userCode,jdbcType=VARCHAR}LIMIT 1</select>