mybatis中實體對象映射方法


最開始寫代碼的時候我很苦惱,對於一個對象中含有另一個對象,每次從數據庫拿到數據后都映射不過來,后來仔細學明白了做個匯總

public class SysUser implements Serializable {
    private static final long serialVersionUID = 3529219554011221820L;
    Integer id ;
    String userName ;
    String userId ;
    String userPassword ;
    String token ;
    
    SysRole sysRole ;

}

 

第一種映射方法,直接映射過去,缺點是,如果role是lsit集合,那么這個方法就不太行了,需要用到下一種方法

<select id="selectUserAndRoleByUserName1" resultType="library.system.dto.SysUser">
        select
        su.user_id ,
        su.user_name ,
        su.user_password ,
        sr.id as "sysRole.id" ,
        sr.role_name  as "sysRole.roleName" ,
        sr.role as "sysRole.role"
        from sys_user su
        inner join sys_user_role sur on su.user_id = sur.user_id
        inner join sys_role sr on sur.role_id = sr.id
        where su.user_name = #{userName}
    </select>

第二種,通過resultMap映射過去:

resultMap id="userMap" type="library.system.dto.SysUser">
        <result property="id" column="id"/>
        <result property="userName" column="user_name"/>
        <result property="userId" column="user_id"/>
        <result property="userPassword" column="user_password"/>
    </resultMap>
    
    <resultMap id="userMap1" extends="userMap" type="library.system.dto.SysUser">
        <collection property="sysRole" ofType="library.system.dto.SysRole">
            <result property="id" column="id"/>
            <result property="roleName" column="role_name"/>
            <result property="role" column="role"/>
        </collection>
    </resultMap>


<select id="selectUserAndRoleByUserName" resultMap="userMap1">
        select
        su.user_id ,
        su.user_name ,
        su.user_password ,
        sr.id ,
        sr.role_name  ,
        sr.role
        from sys_user su
        inner join sys_user_role sur on su.user_id = sur.user_id
        inner join sys_role sr on sur.role_id = sr.id
        where su.user_name = #{userName}
    </select>

這樣一來,就能成功拿到role中數據了。

至此,結束。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM