MyBatis-关联查询
多表查询
在数据库中,表关系有:一对一、多对一、一对多、多对多。 那么在实际开发中,很多查询都是通过多个表之间的关系,进行多表连接查询的。
那么,在多表连接查询中,MyBatis如何实现输出映射呢,这就要使用MyBatis的关联查询。
MyBatis关联查询有两种:
- 多表连接形式
- 单独查询形式
分析查询过程中 注意从哪个方向分析很重要
比如 学生和班级
对于学生来说 一个学生只能存在一个班级中 是一对一关系
在java中则体现为 学生子类中 包含属性类型为班级的属性
对于班级来说 一个班级中可以同时拥有多个学生 是一对多关系
在java中则体现为 在课程子类中 包含属性类型为集合的属性 集合中存放学生类型的数据
********************************************************************************************
一对一查询
测试
********************************************************************************************
一对多查询
测试
********************************************************************************************
多对多查询
SELECT x.xid,s.sname,c.cname FROM xuanke X,st s,course c WHERE x.sid = s.sid AND c.cid = x.cid;
通过学生选课表 关联起学生表和课程表 查询选课id,学生姓名,课程名称
测试
注意:以上查询的查询条件为空或只有一条,
在MyBatis中,使用多条件查询单表时推荐使用对象封装条件
如 查询类型编号为X且配送费大于XX.X的商家信息 (单表-多条件查询)
SELECT * FROM business WHERE ordertypeid=1 AND starprice > 15.0;
测试
在MyBatis中,使用多条件查询多表时推荐使用Map封装条件 Map<String,Object>
如 查询商家名称为 "万家饺子(软件园E18店)"且食品价格大于15的食品信息
SELECT * FROM food f,business b WHERE f.businessid = b.businessid AND b.businessname = "万家饺子(软件园E18店)" AND f.foodprice > 15.0;
测试
本文来自博客园,作者:喵酱爱吃鱼,转载请注明原文链接:https://www.cnblogs.com/zhangyuanmingboke/p/15347471.html