级联关系实现的方式
一对一
一对多
案例实操
一对一关系
实现方式 resultType/resultMap
接口方法
/**
* 一对一关联查询 resultType
* @param userId
* @return
*/
UserDto queryUserCardInfoForResultType(@Param("userId")int userId);
sql 查询
SELECT
u.id,
u.user_name AS userName,
u.user_pwd AS userPwd,
u.flag,
u.cid,
c.number
FROM
USER u
LEFT JOIN card c ON u.cid = c.id
WHERE
u.id = #{userId}
resultType 实现
SELECT
u.id,
u.user_name AS userName,
u.create_time,
u.flag,
u.cid AS cid,
c.number
FROM
User u
LEFT JOIN card c u ON u.cid =c.id
WHERE
u.id = #{id}
resultMap 实现
SELECT u.id,u.user_name,u.true_name,l.role_name
FROM t_user u JOIN t_user_role r
ON (u.id = r.user_id) JOIN t_role l
on (r.role_id = l.id)
WHERE u.id = #{id}
resultMap + association实现
resultMap 映射定义
查询
SELECT id, role_id FROM t_user_role WHERE id = #{id}
SELECT id, role_name , role_remark FROM t_role WHERE id = #{role_id}
一对多关系
实现方式:resultMap 实现
resultType 有局限,无法去重,需手动处理。
ResultMap 定义
查询
select id, name , promotePrice FROM yg_goods WHERE id = #{id}
SELECT id , goods_skuid , goods_img FROM yg_goods_imgage where goods_skuid = #{id}
扩展
sql
sql 元素用来定义一个可以复用的 SQL 语句段,供其它语句调用。比如:
select
from user where userId = #{userId}