映射的关系分类
一对一,一对多、多对多
一对一
本类中定义对方的类型的对象,表1.2
通过resultMap元素里的 association来处理
association>:配置及一下属性
表1.1
属性名 | 作用 |
---|---|
property | 映射到实体对象属性,与表字段一一对应 -->private IdCard card// property=“card” |
column | 指定表对应字段 -->column=“card_id” 数据库的真实字段 |
javaType | 映射到实体对象属性 -->javaType=“IdCard” 映射 |
select | 引入嵌套的子SQL语句、关联嵌套的映射查询 -->select=“com.itheima.mapper.IdCardMapper.findCodeById” 引入另外一条 |
fetchType | 关联是否启用延迟加载 有lazy 和eage 默认延迟加载 |
- 为了实现一对一主要通过两种方式 :嵌套查询 和嵌套结果
嵌套查询–>通过执行另外一条SQl映射语句来返回预期辅助类型 会降低数据区性能
嵌套结果–>使用嵌套结果映射处理重复的联合结果子集 -->减少复杂度,执行一条SQL语句 推荐使用 - 代码块 :
//代码本地chapter09嵌套查询
<select id="findPersonById" parameterType="Integer"
resultMap="IdCardWithPersonResult">
SELECT * from tb_person where id=#{
id}
</select>
<resultMap type="Person" id="IdCardWithPersonResult">
<id property="id" column="id" />
<result property="name" column="name" />
<result property="age" column="age" />
<result property="sex" column="sex" />
<!-- 一对一:association使用select属性引入另外一条SQL语句 -->
<association property="card" column="card_id" javaType="IdCard"
select="com.itheima.mapper.IdCardMapper.findCodeById" />
</<