目录
MyBatis笔记
第1刷,南湖立交2021.12,课程来源:B站up/黑马
多表操作
表间关系
在mysql中,表间关系以外键约束体现.
在Java中,表间关系以类中引用体现.
- 主表(父表):对于两个具有关联关系的表而言,相关联字段中主键所在的表就是主表。
- 从表(子表):对于两个具有关联关系的表而言,相关联字段中外键所在的表就是从表。
-- mysql
CREATE TABLE tb_emp6(
id INT(11) PRIMARY KEY,
name VARCHAR(25),
deptId INT(11),
FOREIGN KEY(deptId) REFERENCES tb_dept1(id)
);
//外键约束的环境:A表的2个字段:id,bid,B表的1个字段:id.
//外键约束的逻辑:为bid添加外键约束,链接B表的id
//java
pubilc class User{
Order order=new Order;
}
一对一表间关系
[需求]
- 为User,Order创建一对一表间关系
[开发步骤]
- 在com.it.domain包中,创建User,Order实体类
- 在User实体类中创建Order的对象,这就是引用数据类型.
- 创建OrderMapper.xml,UserMapper.xml
<association><javaType>
同时查询2个表
SELECT * FROM t1 t,t2 tt WHERE t.c1=tt.c1;
e181
1.查询order表
2.查询order,user表
3.给2个id分别定义别名并查询order,user表
4.运行java程序并查看封装结果:封装失败
5.定义resultMap并配置column-property映射关系
6.运行程序,封装成功
[小结]
多表查询的重点就在于需要手动配置resultMap映射关系,否则程序无法自动封装查询结果并发送给java程序.
[实际练习步骤]
1.准备MySQL环境,编写以下文件
- user表
- order表
- uid外键约束
2.准备java开发环境,编写以下文件
- sqlMapConfig.xml
- UserMapper.xml
- OrderMapper.xml
- User.java
- Order.java
- UserMapper.java
- OrderMapper.java
- MultiTableSelectDemo.java
3.运行程序
*
文件 |
列名/属性名 |
列名/属性名 |
列名/属性名 |
user.table |
id |
username |
password |
User.java |
id |
username |
password |
文件 |
列名/属性名 |
列名/属性名 |
列名/属性名 |
order.table |
id |
total |
uid |
Order.java |
id |
total |
uid |
<collection><ofType>一对多表间关系
**要点**
一对多的查询,使用集合把”多”的那个表封起来,成为”一”的那个表的一个属性.在java程序中封到:属性,在xml配置中封到:<resultMap><collection></collection></resultMap>
```