![](https://i-blog.csdnimg.cn/blog_migrate/0cc29f4b0fbc89431a734d4873c8b220.png)
![](https://i-blog.csdnimg.cn/blog_migrate/a6b11feafe4bf83cc2c116425a2d943c.png)
![](https://i-blog.csdnimg.cn/blog_migrate/11b2f43b16739db53c85280270a1595c.png)
Mybatis 的多表关联查询
3.1 一对一查询
![](https://i-blog.csdnimg.cn/blog_migrate/2249ffeb6c4ea863c4d1c8095254fc72.png)
SELECT
account.*,
user.username,
user.address
FROM
account,
user
WHERE account.uid = user.id
![](https://i-blog.csdnimg.cn/blog_migrate/e87c5d0323c362744723ade67cc7d0d7.png)
3.1.1.3 定义 AccountCustomer 类
3.1.1.4 定义 AccountDao 接口
![](https://i-blog.csdnimg.cn/blog_migrate/3e89640fd372454035600ffd2f49860a.png)
3.1.1.5 定义 AccountDao.xml 文件中的查询配置信息
3.1.1.6 创建 AccountTest 测试类
编写 AccountTest 测试类,用于测试查询结果。
![](https://i-blog.csdnimg.cn/blog_migrate/f9240793815266411ef4ad6f823d6ec0.png)
3.1.2.2 修改 AccountDao 接口中的方法
3.1.2.3 重写 Account 类的 toString()方法
3.1.2.4 重新定义 AccountDao.xml 文件
3.1.2.5 在 AccountTest 类中加入测试方法
3.2 一对多查询
SELECT
u.*, acc.id id,
acc.uid,
acc.money
FROM
user u
LEFT JOIN account acc ON u.id = acc.uid
![](https://i-blog.csdnimg.cn/blog_migrate/e7d64528ad0fec3fc05f9b48878a2969.png)
3.2.2 改写 User 类加入 List<User>
![](https://i-blog.csdnimg.cn/blog_migrate/fb7400bc1bd29b741694b896250ff23f.png)
3.2.3 UserDao 接口中加入查询方法
在 UserDao 接口中加入查询方法:public List<User> findUserAccountList();
3.2.4 修改 UserDao.xml 映射文件
![](https://i-blog.csdnimg.cn/blog_migrate/3b849d8a88e75e9b89869f53385d7f3c.png)
Account 类的 toString()方法
3.3 Mybatis 维护多对多关系
![](https://i-blog.csdnimg.cn/blog_migrate/1c152395a1161c85f62144cec36a45bd.png)
![](https://i-blog.csdnimg.cn/blog_migrate/a3dfc1b8dc53ccca9df961696ee5e8ea.png)
![](https://i-blog.csdnimg.cn/blog_migrate/58323a00b8227959282a45ec372a6a1f.png)
用户角色中间表
3.3.1.2 业务要求及实现 SQL
SELECT
r.*,u.id uid,
u.username username,
u.birthday birthday,
u.sex sex,
u.address address
FROM
ROLE r
INNER JOIN
USER_ROLE ur
ON ( r.id = ur.rid)
INNER JOIN
USER u
ON (ur.uid = u.id);
![](https://i-blog.csdnimg.cn/blog_migrate/23c7d9020e80d0571d7846a65809db33.png)
其中 Role 类中 userList 集合就是用于存在该角色分配给的用户列表。
3.3.1.4 编写 RoleDao 接口
![](https://i-blog.csdnimg.cn/blog_migrate/e70cb8d84be125c893b5e51eb0144dab.png)
3.3.1.5 编写 RoleDao.xml 映射文件
![](https://i-blog.csdnimg.cn/blog_migrate/36c7711ac1d3f05ecec82a8bd6f54b61.png)
第二步:在 RoleDao.xml 文件中加入 SQL 语句的映射
注意:为了显示效果,需要重载 Role 类的 toString()方法
3.3.2 实现 User 到 Role 的多对多