mybatis中的resultmap的具体使用

github链接:https://github.com/AbitGo/mybatis_csdn/tree/master/workspace_mybatis_0x02

如下的resulttype的实现方式:

<select id="selectUserAndRoleById" resultType="com.mybatis.chapter3.SysUser">
        select u.id,
        u.user_name userName,
        u.user_password userPassword,
        u.user_email userEmail,
        u.user_info userInfo,
        u.head_img headImg,
        u.create_time create_time,
        <!--内部类的写法-->
        r.id "role.id",
        r.role_name "role.roleName",
        r.enabled "role.enabled",
        r.create_time "role.create_time",
        r.create_by "role.create_by"
        from sys_user u
        inner join sys_user_role ur on u.id = ur.user_id
        inner join sys_role r on ur.role_id = r.id
        where u.id = #{id}
    </select>

在resultmap的实现中则需要这样
 

<select id="selectUserAndRoleById2" resultMap="userRoleMap">
        select u.id,
        u.user_name,
        u.user_password,
        u.user_email,
        u.user_info,
        u.head_img,
        u.create_time,
        <!--内部类的写法-->
        r.id role_id,
        r.role_name role_Name,
        r.enabled role_enabled,
        r.create_time role_create_time,
        r.create_by role_create_by
        from sys_user u
        inner join sys_user_role ur on u.id = ur.user_id
        inner join sys_role r on ur.role_id = r.id
        where u.id = #{id}
    </select>

<resultMap id="userRoleMap" type="com.mybatis.chapter3.SysUser">
        <id property="id" column="id"/>
        <result property="userName" column = "user_name"/>
        <result property="userPassword" column = "user_password"/>
        <result property="userEmail" column = "user_email"/>
        <result property="userInfo" column = "user_info"/>
        <result property="headImg" column = "head_img" jdbcType="BLOB"/>
        <result property="create_time" column = "create_time" jdbcType="TIMESTAMP"/>
        <!--相关属性-->
        <result property="role.id" column = "role_id"/>
        <result property="role.role_Name" column = "role_Name"/>
        <result property="role.enabled" column = "role_enabled"/>
        <result property="role.create_by" column = "role_create_by"/>
        <result property="role.create_time" column = "role_create_time" jdbcType="TIMESTAMP"/>

    </resultMap>

程序员还是懒得嘛,并且MyBatis也是支持resultMap映射继承的。所以演化成下面的xml。

<select id="selectUserAndRoleById2" resultMap="userRoleMap">
        select u.id,
        u.user_name,
        u.user_password,
        u.user_email,
        u.user_info,
        u.head_img,
        u.create_time,
        <!--内部类的写法-->
        r.id role_id,
        r.role_name role_Name,
        r.enabled role_enabled,
        r.create_time role_create_time,
        r.create_by role_create_by
        from sys_user u
        inner join sys_user_role ur on u.id = ur.user_id
        inner join sys_role r on ur.role_id = r.id
        where u.id = #{id}
    </select>
<resultMap id="userMap" type="com.mybatis.chapter3.SysUser">
        <id property="userName" column="user_name"/>
        <result property="userName" column = "user_name"/>
        <result property="userPassword" column = "user_password"/>
        <result property="userEmail" column = "user_email"/>
        <result property="userInfo" column = "user_info"/>
        <result property="headImg" column = "head_img" jdbcType="BLOB"/>
        <result property="create_time" column = "create_time" jdbcType="TIMESTAMP"/>
    </resultMap>
<resultMap id="userRoleMap" extends="userMap" type="com.mybatis.chapter3.SysUser">
        <result property="role.id" column = "role_id"/>
        <result property="role.role_Name" column = "role_Name"/>
        <result property="role.enabled" column = "role_enabled"/>
        <result property="role.create_by" column = "role_create_by"/>
        <result property="role.create_time" column = "role_create_time" jdbcType="TIMESTAMP"/>
    </resultMap>

再往后,程序员还是觉得麻烦,就这样写

<select id="selectUserAndRoleById2" resultMap="userRoleMap">
        select u.id,
        u.user_name,
        u.user_password,
        u.user_email,
        u.user_info,
        u.head_img,
        u.create_time,
        <!--内部类的写法-->
        r.id role_id,
        r.role_name role_Name,
        r.enabled role_enabled,
        r.create_time role_create_time,
        r.create_by role_create_by
        from sys_user u
        inner join sys_user_role ur on u.id = ur.user_id
        inner join sys_role r on ur.role_id = r.id
        where u.id = #{id}
    </select>


    <resultMap id="userMap" type="com.mybatis.chapter3.SysUser">
        <id property="userName" column="user_name"/>
        <result property="userName" column = "user_name"/>
        <result property="userPassword" column = "user_password"/>
        <result property="userEmail" column = "user_email"/>
        <result property="userInfo" column = "user_info"/>
        <result property="headImg" column = "head_img" jdbcType="BLOB"/>
        <result property="create_time" column = "create_time" jdbcType="TIMESTAMP"/>
    </resultMap>

<resultMap id="userRoleMap" extends="userMap" type="com.mybatis.chapter3.SysUser">
        <!--使用association标签-->
        <association property="role" columnPrefix="role_"
                     javaType="com.mybatis.chapter3.SysRole">
            <result property="id" column = "id"/>
            <result property="role_Name" column = "Name"/>
            <result property="enabled" column = "enabled"/>
            <result property="create_by" column = "create_by"/>
            <result property="create_time" column = "create_time" jdbcType="TIMESTAMP"/>
        </association>

最后,就发展成了这样子

<select id="selectUserAndRoleById2" resultMap="userRoleMap">
        select u.id,
        u.user_name,
        u.user_password,
        u.user_email,
        u.user_info,
        u.head_img,
        u.create_time,
        <!--内部类的写法-->
        r.id role_id,
        r.role_name role_role_Name,
        r.enabled role_enabled,
        r.create_time role_create_time,
        r.create_by role_create_by
        from sys_user u
        inner join sys_user_role ur on u.id = ur.user_id
        inner join sys_role r on ur.role_id = r.id
        where u.id = #{id}
    </select>


    <resultMap id="userMap" type="com.mybatis.chapter3.SysUser">
        <id property="userName" column="user_name"/>
        <result property="userName" column = "user_name"/>
        <result property="userPassword" column = "user_password"/>
        <result property="userEmail" column = "user_email"/>
        <result property="userInfo" column = "user_info"/>
        <result property="headImg" column = "head_img" jdbcType="BLOB"/>
        <result property="create_time" column = "create_time" jdbcType="TIMESTAMP"/>
    </resultMap>

    <resultMap id="roleMap" type="com.mybatis.chapter3.SysRole">
        <id property="id" column="id"/>
        <result property="role_Name" column = "role_Name"/>
        <result property="enabled" column = "enabled"/>
        <result property="create_by" column = "create_by"/>
        <result property="create_time" column = "create_time" jdbcType="TIMESTAMP"/>
    </resultMap>

    <resultMap id="userRoleMap" extends="userMap" type="com.mybatis.chapter3.SysUser">
        <association property="role" columnPrefix="role_" resultMap="roleMap"/>
    </resultMap>

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值