mybatis一對多查詢


public class UserDto implements Serializable{
/**
* 登錄名
*/
private String loginName;
/**
* 昵稱
*/
private String nickName;

/**
* 手機號碼
*/
private String tel;
/**
* 郵箱地址
*/
private String email;

/**
* 賬戶是否鎖定
*/
private Boolean locked;

/**
* 頭像
*/
private String icon;

/**
* 用戶所擁有的角色
*/
private Set<RoleDto> roleLists = Sets.newHashSet();

查詢當前用戶的信息和角色信息和當前用戶的角色信息。一個用戶有可能有多個角色。同時還要將用戶每個角色的權限查詢出來。

用上面這個實體類。一個用戶多個角色則是一對多

<!-- 定義的map 通過用戶名查詢出用戶的信息和用戶的角色信息-->
<resultMap type="com.julu.appcloud.modules.system.dto.UserDto" id="UserAndRole">
<result property="loginName" column="login_name"/>
<result property="nickName" column="nick_name"/>
<result property="tel" column="tel"/>
<result property="email" column="email"/>
<result property="icon" column="icon" />
<result property="locked" column="locked"/>
<collection property="roleLists" ofType="com.julu.appcloud.modules.system.dto.RoleDto">
<result property="code" column="role.id"/>
<result property="name" column="role.name"/>
<!--<result property="name" column="role.name"/> -->
</collection>

</resultMap>
<!-- 通過用戶名查詢出用戶的信息和用戶的角色信息
UserDto findUserByUsername(String username); -->
<select id="findUserAndRoleByUsername" resultMap="UserAndRole">
select
u.id,
u.login_name,
u.nick_name,
u.tel,
u.email,
u.locked,
u.icon,
r.id AS "role.id",
r.name AS "role.name"
from
sys_user u
left join sys_user_role sur on sur.user_id = u.id
left join sys_role r on r.id = sur.role_id

where u.login_name=#{username}
</select>

查詢出來在service實現類遍歷menu.roleList()得到用戶的每個角色名稱和每個角色的id。

使用用戶角色的名稱個id查詢出所有的Set<Menu> menuList

在將查詢出來的menuList放入RoleDto的private Set<Menu> menuList屬性中


免責聲明!

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



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