关联映射

什么是?

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

为什么?

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

何时用?

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

怎么用?

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. 辅助模块应用(auxiliary/scanner/portscan/tcp)

    实验步骤 创建msf所需的数据库 之前我们开启msf时下面总会出现一个红色的小减号,原来是因为没有和数据库键连接,于是首先我们要手动建立一个数据库... 使用命令来实现: service postgr ...

  2. 20162326 qilifeng 2018-2019-2 《网络对抗技术》Exp0 Kali安装 Week1

    <网络对抗技术>第1次作业 (一)作业任务 1.安装kali 2.设置共享文件夹 (二)操作过程 1.安装kali 因为之前安装过Oracle 的VM VirtualBox 所以直接 进入 ...

  3. NOIP2016 T4 魔法阵 暴力枚举+前缀和后缀和优化

    想把最近几年的NOIP T4都先干掉,就大概差16年的,所以来做一做. 然后这题就浪费了我一整天QAQ...果然还是自己太弱了QAQ 点我看题 还是pa洛谷的... 题意:给m个物品,每个物品有一个不 ...

  4. Uva 12304 - 2D Geometry 110 in 1!

    http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&p ...

  5. callee 与 caller

    arguments.callee 在函数内部指向函数本身 1.函数调用 function sum (num){ if(num <= 1){ return 1; }else{ return num ...

  6. node的开发者环境设置丢失

    1.我看到的最简单的一种:evn 默认的值是  development var app = express(); if (app.get('env') === 'development') { req ...

  7. 递推-练习1--noi1760 菲波那契数列(2)

    递推-练习1--noi1760 菲波那契数列(2) 一.心得 二.题目 1760:菲波那契数列(2) 总时间限制:  1000ms 内存限制:  65536kB 描述 菲波那契数列是指这样的数列: 数 ...

  8. git add 的一点说明

    git add --cached 这里 --cached是什么意思呢?要解释清楚这个问题,我们必须先了解一个文件在git中的状态. [commit]----[stage]-----[checkout] ...

  9. KMP与AC自动机

    KMP算法主要思想就是预处理出失配函数, 从而减少匹配失败时的回溯, 复杂度是$\Theta(m+n)$, 已达到理论下界 c++代码如下 int n, f[N]; char t[N], p[N]; ...

  10. go_install_x_from_github.sh 从 github 安装 go x tools

    bash go_install_x_from_github.sh #!/bin/bash set +e # set -x echo 'GO Utilities: Install golang.org/ ...