MyBatis处理关联一对一,一对多和多对多关系-多表连接详细案例

实体间的关系:关联关系(拥有 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
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值