目录
3、多对多:借助中间表,中间表至少两个字段,分别关联两张表的主键
一、多表之间的关系
1、一对一:在任意一方建立外键,关联对方的主键
1、数据准备
2、修改核心配置文件,比如别名,引入映射文件等
3、编写映射配置文件下xml **
因为多表操作,返回类型不再是resultType, 变成了resultMap
<?xml version="1.0" encoding="UTF-8" ?>
<!--MyBatis的DTD约束-->
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!--
mapper: 核心根标签
namespace: 名称空间
-->
<mapper namespace="com.itheima.table01.OneToOneMapper">
<!--配置表中字段和实体对象属性的映射关系-->
<resultMap id="oneToOne" type="card">
<id column="cid" property="id"/>
<result column="number" property="number"/>
<!--association: 配置被包含对象的映射关系
property: 被包含对象的变量名
javaType: 被包含对象的数据类型-->
<association property="p" javaType="person">
<id column="pid" property="id"/>
<result column="name" property="name"/>
<result column="age" property="age"/>
</association>
</resultMap>
<select id="selectAll" resultMap="oneToOne">
select c.id cid, number, pid, name, age from card c, person p where c.id=p.id
</select>
</mapper>
2、一对多:在多的一方建立外键,关联一的一方建立主键
注意:
<?xml version="1.0" encoding="UTF-8" ?>
<!--MyBatis的DTD约束-->
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!--
mapper: 核心根标签
namespace: 名称空间
-->
<mapper namespace="com.itheima.table02.OneToManyMapper">
<!--配置表中字段和实体对象属性的映射关系-->
<resultMap id="oneToMany" type="classes">
<id column="cid" property="id"/>
<result column="cname" property="name"/>
<!--
collection: 配置被包含的集合对象映射关系
property:被包含对象的变量名
ofType:被包含对象的实际数据类型-->
<collection property="students" ofType="student">
<id column="sid" property="id"/>
<result column="sname" property="name"/>
<result column="sage" property="age"/>
</collection>
</resultMap>
<select id="selectAll" resultMap="oneToMany">
select c.id cid, c.name cname, s.id sid, s.name sname, s.age sage
from classes c, student s
where c.id=s.cid
</select>
</mapper>
3、多对多:借助中间表,中间表至少两个字段,分别关联两张表的主键