实体间的关系:关联关系(拥有 has、属于 belong)
-
OneToOne:一对一关系(Passenger— Passport)
-
OneToMany:一对多关系(Employee — Department)
-
ManyToMany:多对多关系(Student — Subject)
下面是示例展示MyBatis处理一对一,一对多和多对多的关联关系
1、OneToOne
- 一对一关系表设计(旅客表对护照表,一个旅客对应一张护照)
create table t_passengers(
id int PRIMARY key auto_increment,
name VARCHAR(20),
sex VARCHAR(6),
birthday DATE
);
insert into t_passengers(id,name,sex,birthday) values(1001,'eric','man',NOW());
insert into t_passengers(id,name,sex,birthday) values(1002,'jack','man',NOW());
insert into t_passengers(id,name,sex,birthday) values(1003,'marry','woman',NOW());
create table t_passports(
id int PRIMARY key auto_increment,
nationality VARCHAR(20),
expire date,
passenger_id INT UNIQUE
);
insert into t_passports(id,nationality,expire,passenger_id) values(1000001,'china','1990-11-11',1001);
insert into t_passports(id,nationality,expire,passenger_id) values(1000002,'america','2020-12-31',1002);
insert into t_passports(id,nationality,expire,passenger_id) values(1000003,'korea','1990-05-01',1003);
实体类
/**
* 旅客类
* @author QY
* @date 2020-12-1715:07
**/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Passengers {
private Integer id;
private String name;
private String sex;
private Date birthday;
private Passports passports;
}
/**
* 护照类
* @author QY
* @date 2020-12-1715:11
**/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Passports {
private Integer id;
private String nationality;
private Date expire;
private Integer passenger_id;
}
对应的Mapper.xml
<mapper namespace="com.qf.mybatis.part2.one2one.PassengerDao">
<!-- 结果映射(查询结果的封装规则) -->
<resultMap id="passengerResultMap" type="com.qf.mybatis.part2.one2one.Passenger">
<id property="id" column="id"/>
<result property="name" column="name" />
<result property="sex" column