Hello World

mybatis: 高级结果映射-resultMap

【参考文章】: 官网地址

将查询的字段信息映射为一个复杂对象

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配置

  1. 没有特殊配置的字段,默认按照默认规则映射到实体属性
    <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>
posted @ 2022-04-14 20:02  小小忧愁米粒大  阅读(58)  评论(0编辑  收藏  举报
瞅啥瞅,好好看书