MyBatis-关联查询

多表查询

在数据库中,表关系有:一对一、多对一、一对多、多对多。 那么在实际开发中,很多查询都是通过多个表之间的关系,进行多表连接查询的。

那么,在多表连接查询中,MyBatis如何实现输出映射呢,这就要使用MyBatis的关联查询。

MyBatis关联查询有两种:

  1. 多表连接形式
  2. 单独查询形式

分析查询过程中 注意从哪个方向分析很重要  

比如 学生和班级

对于学生来说 一个学生只能存在一个班级中 是一对一关系 

  在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;

 

 

 

 

测试

 

 

 

 

 

posted @ 2021-09-28 13:27  喵酱爱吃鱼  阅读(1044)  评论(0编辑  收藏  举报