你知道 Mybatis 框架如何实现级联关系吗?

90 阅读1分钟

级联关系实现的方式 一对一

一对多

案例实操 一对一关系 实现方式 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}