MyBatis复杂映射开发之多对多查询
多对多查询的模型
用户表和角色表的关系为,一个用户有多个角色,一个角色被多个用户使用。
多对多查询的需求:查询所有用户的同时查询出该用户对应的所有角色。
1 | @startuml |
如果图片无法查看,请看这里
多对多查询的语句
对应的sql语句:
1 | select u.id,u.username,r.id,r.rolename from user u left join sys_user_role ur on u.id=ur.userid |
查询结果如下:
id | username | id | rolename |
---|---|---|---|
1 | lucy | 1 | CTO |
2 | tom | 1 | CTO |
1 | lucy | 2 | CEO |
2 | tom | 2 | CEO |
创建Role实体,修改User实体
User
1 | class User { |
1 | public class User { |
Role
1 | class Role { |
1 | public class Role { |
UserMapper添加接口方法
1 | /** |
1 | /** |
配置UserMapper.xml
1 | <resultMap id="userRoleMap" type="com.terwergreen.pojo.User"> |
测试结果
1 | ==> Preparing: select u.id,u.username,r.id as rid,r.rolename from user u left join sys_user_role ur on u.id=ur.userid inner join sys_role r on r.id=ur.roleid |
知识总结
MyBatis多表配置方式:
一对一配置:使用做配置
一对多配置:使用+做配置
多对多配置:使用+做配置
本文代码地址
![NOTE]
文章更新历史2022/05/08 feat:新增Kotlin支持。
2022/05/04 feat:初稿。