关联映射

什么是?

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

为什么?

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

何时用?

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

怎么用?

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内核与分析 心得与体会

    作业目录: (1)计算机是如何工作的:http://www.cnblogs.com/20135335hs/p/5213394.html (2)操作系统是如何工作的:http://www.cnblogs ...

  2. kali_install_complete_no_sound

    参考:http://tieba.baidu.com/p/4343219808 用pulseaudio --start会看到一些信息,提示类似root用户之类的 我是用下面这个方法搞定的 systemc ...

  3. 从0开始学习 GITHUB 系列之「GIT 速成」【转】

    本文转载自:http://stormzhang.com/github/2016/05/30/learn-github-from-zero3/ 版权声明:本文为 stormzhang 原创文章,可以随意 ...

  4. Mininet实验 设置带宽之简单性能测试

    原文:设置带宽之简单性能测试 这个实验主要还是说明通过python程序来设定Mininet中的链路带宽. 目的: Python脚本实现自定义拓扑 设置链路的带宽.延迟及丢包率 iperf测试主机间的带 ...

  5. jmeter 网速

    有人知道在jmeter 哪个里面哦 JMeterPlugins里面 network

  6. CentOS环境Docker安装教程(官方推荐的docker三种方式安装)

    CentOS环境Docker安装教程(官方推荐的docker三种方式安装) 一.使用yum方式安装 1.安装依赖包 $ sudo yum install -y yum-utils device-map ...

  7. codeforce——思维dp

    Codeforces 822C Hacker, pack your bags!(思维)   题目大意:给你n个旅券,上面有开始时间l,结束时间r,和花费cost,要求选择两张时间不相交的旅券时间长度相 ...

  8. python socket 编程(TCP与UDP)

    实验环境:python2 一.TCP编程 1.建立TCP服务器 ①创建TCPServer.py文件 ②编写服务器代码 1)创建socket对象,调用socket构造函数 2)绑定ip端口(IP号和端口 ...

  9. 微任务、宏任务与Event-Loop

    首先,JavaScript是一个单线程的脚本语言.所以就是说在一行代码执行的过程中,必然不会存在同时执行的另一行代码,就像使用alert()以后进行疯狂console.log,如果没有关闭弹框,控制台 ...

  10. 047——VUE中css过渡动作实例

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...