级联关系实现的方式
-
一对一
-
一对多
案例实操
一对一关系
实现方式 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 语句段,供其它语句调用。比如:
userId, userName, password
select from user where userId = #{userId}