背景:一个用户有多个角色,在获取用户列表的时候想查询该用户有哪些角色
有子查询:通过用户ID,查询角色信息,绝对路径为xxx.a
java
<!-- 通过用户ID,查询角色信息-->
<select id="ida" type="接收user下的role的实体类">
SELECT r.*
FROM role r,
user_role ur
WHERE r.role_id = ur.role_id
and ur.user_id IN (#{userId})
</select>
1传入一个参数
嵌套查询的接收数据映射
java
<resultMap id="mapc" type="接收user以及user下的role 的嵌套实体类">
<id column="user_id" property="userId"/>
<result column="username" property="username"/>
<!-- 一对多关系并且传一个参数-->
<collection property="roleList" ofType="接收user下的role的实体类"
select="xxx.a"
column="user_id">
</collection>
</resultMap>
则 嵌套查询语句:用户列表+用户有哪些角色:
java
<select id="idb" resultMap="mapc">
SELECT u.*
from user u
LEFT JOIN user_role ur on u.user_id=ur.user_id
<if test="userId != null and userId!= ''">
and ur.user_id = #{userId}
</if>
</select>
2如果传入多个参数
子查询,绝对路径为xxx.a
java
<select id="ida" type="接收user下的role的实体类">
SELECT r.*
FROM role r,
user_role ur
WHERE r.role_id = ur.role_id
and ur.user_id IN (#{userId})
<if test="subId!= null and subId!= ''">
and r.sub_id = #{subId}
</if>
</select>
嵌套查询的接收数据映射
java
<resultMap id="mapc" type="接收user以及user下的role 的嵌套实体类">
<id column="user_id" property="userId"/>
<result column="username" property="username"/>
<!-- 一对多关系并且传多个参数-->
<collection property="roleList" ofType="接收user下的role的实体类"
select="xxx.a"
column= "{userId=user_id,subId=sub_id}" >
</collection>
</resultMap>
则 嵌套查询语句:用户列表+用户有哪些角色:
java
<select id="idb" resultMap="mapc">
SELECT u.*
from user u
LEFT JOIN user_role ur on u.user_id=ur,user_id
<if test="userId != null and userId!= ''">
and u.user_id = #{userId}
</if>
<if test="subId!= null and subId != ''">
and ur.sub_id = #{subId}
</if>
</select>