02

关联映射

什么是?

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

为什么?

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

何时用?

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

怎么用?

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语句实现多个对象关联

原文地址:https://www.cnblogs.com/tangshengwei/p/6618435.html