关联映射

什么是?

数据库中有关联关系的表,通过实体对象引用的方式体现出来,叫关联映射.

为什么?

将多表的记录封装成实体对象.

何时用?

对数据库中的表进行多表查询时.

怎么用?

cn_user------>User

cn_notebook-->Book

public class User{

cnuserid

cnusername

.

.

.

List books; }

public class Book{

cnuserid

cnusername

.

.

.

User user;

}

单个对象的关联

  • 单个SQL语句实现

  • 两条SQL语句实现

多个对象的关联

  • 单个SQL语句实现:一条SQL语句实现,SQL语句复杂,与数据库交互一次.

  • 两条SQL语句实现:一条语句查询USER,一条语句查询BOOK,SQL语句简单,与数

据库进行了两次交互

案例:查询User关联Book的相关信息

实现步骤:

  1. 定义Dao接口文件

  2. 定义Mapper文件

  3. 执行测试

  4. 练习: 用一条语句实现加载多个关联对象

    select * from cn_user u join cn_notebook b on
    
    (u.cn_user_id=b.cn_user_id)
    
    where u.cn_user_id=#{userId}
    
    mapper文件中定义一个<select>标签和<resultMap>标签

案例:查询Book关联User信息(单个对象关联)

实现步骤:

  1. 定义Dao接口文件

  2. 定义Mapper文件

  3. 执行测试

  4. 一个SQL语句实现关联查询

练习:通过两个SQL语句查询Book关联User信息

  • Mapper定义:

        <select>
    cn_notebook全表查询
    </select>
    <resultMap>
    定义Book映射
    <association>
    定义User映射
    </association>
    </resultMap>
    <select>
    关联cn_user表查询
    </select>

主键字段的处理

利用数据自增列作为主键时,执行insert操作时,可以在服务器端自动获取主键值

如何实现

    <insert
useGeneratedKeys="true" keyProperty="id">

创建表:

    create table t_emp(id int primary key auto_increment,name varchar(30),age int)

作业:

  • 利用一个SQL语句实现单个对象关联

  • 利用两个SQL语句实现多个对象关联

02 - Unit010:关联映射的更多相关文章

  1. Hibernate框架之关联映射入门

    关联映射就是将关联关系映射到数据库里,在对象模型中就是一个或多个引用. 一:配置单向多对一关联 在Emp类中定义一个Dept属性,而在Dept类中无须定义用于存放Emp对象的集合属性 01.Dept. ...

  2. Hibernatel框架关联映射

    Hibernatel框架关联映射 Hibernate程序执行流程: 1.集合映射 需求:网络购物时,用户购买商品,填写地址 每个用户会有不确定的地址数目,或者只有一个或者有很多.这个时候不能把每条地址 ...

  3. hibernate多对多关联映射

    关联是类(类的实例)之间的关系,表示有意义和值得关注的连接. 本系列将介绍Hibernate中主要的几种关联映射 Hibernate一对一主键单向关联Hibernate一对一主键双向关联Hiberna ...

  4. Hibernate一对多单向(双向)关联映射

    (1).编写配置文件 Hibernate通过读写默认的XML配置文件hibernate.cfg.xml加载数据库配置信息.代码如下: <hibernate-configuration> & ...

  5. Java三大框架之——Hibernate关联映射与级联操作

    什么是Hibernate中的关联映射? 简单来说Hibernate是ORM映射的持久层框架,全称是(Object Relational Mapping),即对象关系映射. 它将数据库中的表映射成对应的 ...

  6. Hibernate关联映射 映射文件的配置

    一:多对一单向关联 首先我们必须创建两个实体类 例如:Dept类 public class Dept { private Integer deptNo; private String dName; p ...

  7. Hibernate组件和关联映射

    一.基本定义 组件:建立一个类,为了方便代码复用和建立模型,但类在数据库中并没有对应的表,此类可以作为一个组件插入到其他类中(有数据表的类) 组件和关联映射的关系是组件是没有对应的类;组件是值类型的, ...

  8. 【Hibernate框架】关联映射(多对多关联映射)

    按着我们的总结行进计划,接下来,就是有关于多对多映射的总结了. 我们来举个例子啊,很长时间以来,房价暴涨不落,但是还有很多人拥有很多套房产,假如说,一个富豪拥有九套房产,家里人么准去住哪一套,我们就以 ...

  9. 【Hibernate框架】关联映射(一对多,多对一)

    根据我们的总结计划,上篇文章我们总结了有关于一对一映射相关知识,接下来,我们进行下一个阶段,一对多.多对一映射相关知识. 场景设定: 国家规定,一个人只能在一个公司上班,一个公司可以拥有很多员工.我们 ...

随机推荐

  1. linux第七章读书笔记

    Vim编辑器 Vim 仅仅通过键盘来在插入和执行命令等多种模式之间切换.这使得Vim可以不用进行菜单或者鼠标操作,并且最小化组合键的操作,对文字录入员或者程序员可以大大增强速度和效率. CHAPTER ...

  2. 自定义Git【转】

    本文转载自:http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000 自定义Git 在安装G ...

  3. MyBatis基本工作原理

    Application是程序员开发的Java代码,蓝色为MyBatis框架. API是MyBatis提供的增删改查等功能接口. 老式SQL写法我们在Dao中写SQL: SELECT * FROM us ...

  4. BZOJ 2226 【SPOJ 5971】 LCMSum

    题目链接:LCMSum 这个题显然就是要我们推式子了……那么就来推一波: \begin{aligned}&\sum_{i=1}^n lcm(i,n) \\=&\sum_{i=1}^n\ ...

  5. BZOJ 4011 【HNOI2015】 落忆枫音

    题目链接:落忆枫音 以下内容参考PoPoQQQ大爷的博客 首先我们先来考虑一下如果没有新加入的那条边,答案怎么算. 由于这是一个\(DAG\),所以我们给每个点随便选择一条入边,最后一定会构成一个树形 ...

  6. 【转】Scala基础知识

    原文地址.续 课程内容: 关于这节课 表达式 值 函数 类 继承 特质 类型 apply方法 单例对象 函数即对象 包 模式匹配 样本类 try-catch-finally 关于这节课 最初的几个星期 ...

  7. 同样是搞Java,年薪15W和50W到底差在哪里?

    同样是搞Java,年薪15W和50W到底差在哪里? 一.总结 一句话总结: 学习 挑战 1.扩宽自己的眼界,学着从全局看待问题,并且勇于挑战别人眼中的难题 2.持续提升你的学习能力,虽然有很多人以「在 ...

  8. [转载]SQL语句练习

    .查询“生物”课程比“物理”课程成绩高的所有学生的学号: 思路: 获取所有有生物课程的人(学号,成绩) - 临时表 获取所有有物理课程的人(学号,成绩) - 临时表 根据[学号]连接两个临时表: 学号 ...

  9. IOS UI-QQ好友列表

    一.Model // // FriendsModel.h // IOS_0111_好友列表 // // Created by ma c on 16/1/11. // Copyright (c) 201 ...

  10. Git标签(版本)管理

    列出当前所有的标签 git tag     可以搜索特定的标签,例如你只想看稳定版相关的 git tag -l "*.stable"   给当前commit打标签(设定版本) gi ...