【参考文章】: 官网地址
将查询的字段信息映射为一个复杂对象
1. 对象信息
public class Blog{
String id;
String title;
String type;
String info;
String createUserId;
String createUserName;
User user;
List<Tag> tagList;
}
public class Tag{
String id;
String blogId;
String tagName;
String desc;
}
public class User{
String id;
String userName;
String password;
}
2. resultMap配置
- 没有特殊配置的字段,默认按照默认规则映射到实体属性
<resultMap id="resultMap" type="com.skd.entity.Blog" >
<id property="id" column="id"/>
<!-- 引用类型属性 -->
<association property="user" javaType="com.skd.entity.User">
<result property="id" column="create_user_id"/>
<result property="userName" column="create_user_name"/>
</association>
<!-- 集合类型属性 -->
<collection
property="tagList" <!-- 集合类型属性名称 -->
ofType="com.skd.entity.Tag" <!-- 集合元素类型 -->
column="{blog_id=id}" <!-- 使用Blog的id字段作为子查询的blog_id参数值 -->
select="getTagListByBlogId"> <!-- 调用子查询 -->
</collection>
<!-- 根据某个字段值使用不同的SQL字段填充对象属性 -->
<discriminator javaType="String" column="type">
<case value="SPECIAL">
<result property="info" column="s_info"/>
</case>
<case value="GENERAL">
<result property="info" column="g_info"/>
</case>
</discriminator>
</resultMap>