Mybatis many=@Many的传值问题,子查询调用主查询的结果参数

本文详细解析了MyBatis中如何实现多表关联查询,通过具体代码示例展示了如何使用@Select和@Results注解进行主查询和子查询,以及如何通过@Many注解实现角色列表的级联加载。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

@Select({“select * from user where username = #{userName}”}) ①
@Results({
@Result(
property = “id”, column = “id” ②
),
@Result(
property = “roleList”,column=“id”, ③
many = @Many(select = “com.x.dt.mapper.UserMapper.selectByUserNameRoleId”)
)})
List selectByName(String userName);

@Select({"select id from role where id in(select role_id from user_role where user_id=#{userId})"})
List<Role> selectByUserNameRoleId(@Param("userId") String userId);

三个表
user role
user_role为关联表
①主查询,查询得到结果。 将结果里面的id字段赋给③,③里面的id为子查询的条件,③的id与①里面的数据库字段相对应。
selectByUserNameRoleId通过③的coulmn为查询条件。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值