mybatis基於注解映射Set屬性


github地址:https://github.com/VioletSY/share

(1)使用場景,現有sys_user,sys_role,sys_permission三張表,關系是1:n:n

 

(2)現在想通過用戶的id返回用戶的詳細信息,包括用戶擁有的角色,以及各個角色擁有的權限

    /**
     * 獲取用戶的詳細信息
     * @param id
     * @return
     */
    @Select("select a.id,a.name,b.user_id userId from sys_user a left join sys_link_user_role b on a.id = b.user_id where a.id = #{id} GROUP BY a.id,a.name ")
    @Results({ @Result(id = true, column = "id", property = "id") ,
            @Result(id = true, column = "id", property = "id") ,
            @Result(column = "username", property = "username") ,
            @Result(column = "name", property = "name"),
            @Result(column = "num", property = "num") ,
            @Result(column = "sex", property = "sex") ,
            @Result(column = "tel", property = "tel") ,
            @Result(column = "headimage", property = "headimage") ,
            @Result(property="roles",many=@Many(select="selByUserId"),column="{userId=userId}")})
    User get(String id);

    /**
     * 根據用戶id獲取用戶的角色集合
     * @param map
     * @return
     */
    @Select("select d.id,d.code,d.name,d.num from  sys_link_user_role b left join sys_role d on b.role_id = d.id where b.user_id = #{userId} ")
    @Results({ @Result(id = true, column = "id", property = "id") ,
        @Result(id = true, column = "id", property = "id") ,
        @Result(column = "code", property = "code") ,
        @Result(property="permissions",many=@Many(select="selByRoleId"),column="{roleId=id}")})
    Set<Role> selByUserId(Map<String,Object> map);
    
    /**
     * 根據用角色的id獲取角色對應的權限集合
     * @param map
     * @return
     */
    @Select("select b.id,b.code,b.name,b.num from  sys_link_role_permission a left join sys_permission b on a.permission_id = b.id where a.role_id = #{roleId}")
    Set<Permissions> selByRoleId(Map<String,Object> map);

 (3)測試:

 


免責聲明!

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



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