数据库的 一对多、多对一、一对一、多对多 关系 以及对应的建表方式~

关联映射:一对多/多对一

存在最普遍的映射关系,简单来讲就如球员与球队的关系;

一对多:从球队角度来说一个球队拥有多个球员 即为一对多

多对一:从球员角度来说多个球员属于一个球队 即为多对一

数据表间一对多关系如下图:
在这里插入图片描述
关联映射:一对一

一对一关系就如球队与球队所在地址之间的关系,一支球队仅有一个地址,而一个地址区也仅有一支球队。

数据表间一对一关系的表现有两种,一种是外键关联,一种是主键关联。图示如下:

一对一外键关联:
在这里插入图片描述
一对一主键关联:要求两个表的主键必须完全一致,通过两个表的主键建立关联关系

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MyBatis 是一种基于 Java 语言的持久层框架,可以与多种关系数据库进行交互,提供了一种优雅的方式来映射对象与 SQL 语句。在 MyBatis 中,一对多关系可以通过配置多个 resultMap 来实现。 例如,我们有两个表,一个是部门表(department),一个是员工表(employee),一个部门可以有多个员工,员工表中有一个外键 dept_id 关联到部门表的主键 id。下面是部门表和员工表的建表语句: ``` CREATE TABLE department ( id INT PRIMARY KEY, name VARCHAR(50) ); CREATE TABLE employee ( id INT PRIMARY KEY, name VARCHAR(50), dept_id INT, FOREIGN KEY (dept_id) REFERENCES department(id) ); ``` 在 MyBatis 中配置一对多关系的步骤如下: 1. 在 MyBatis 配置文件中配置两个 resultMap,一个用于映射部门表的数据,一个用于映射员工表的数据。 ```xml <!-- 映射部门表的数据 --> <resultMap id="departmentMap" type="Department"> <id property="id" column="id"/> <result property="name" column="name"/> </resultMap> <!-- 映射员工表的数据 --> <resultMap id="employeeMap" type="Employee"> <id property="id" column="id"/> <result property="name" column="name"/> <association property="department" resultMap="departmentMap"/> </resultMap> ``` 2. 在 SQL 映射文件中编写查询语句,使用 JOIN 语句连接两个表,并使用嵌套查询语句查询员工表中的数据。 ```xml <!-- 查询部门及其员工信息 --> <select id="getDepartmentWithEmployees" resultMap="departmentMap"> SELECT d.id, d.name, e.id as employee_id, e.name as employee_name FROM department d LEFT JOIN employee e ON d.id = e.dept_id ORDER BY d.id </select> ``` 3. 在 Java 代码中调用 MyBatis 提供的 API 进行查询。 ```java SqlSession session = sqlSessionFactory.openSession(); try { DepartmentMapper mapper = session.getMapper(DepartmentMapper.class); Department department = mapper.getDepartmentWithEmployees(); System.out.println(department); } finally { session.close(); } ``` 其中,DepartmentMapper 是一个 Java 接口,用于定义查询方法,getDepartmentWithEmployees 方法用于查询部门及其员工信息。Department 和 Employee 是 Java 类,分别对应部门表和员工表中的数据。在 Employee 类中,还需要定义一个 Department 类型的属性用于存储所属部门的信息。 总之,使用 MyBatis 实现一对多关系需要配置多个 resultMap,并在 SQL 映射文件中使用 JOIN 语句连接两个表,使用嵌套查询语句查询员工表中的数据。通过调用 MyBatis 提供的 API 进行查询,可以将查询结果映射到 Java 对象中。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值