Mybatis 实战:一对多关系

一 背景

1.1 举例

公司有若干名员工,此时,该公司与其员工之间的关系就属于一对多的关系。根据以上信息,我们可以创建公司信息与员工信息两张表。其中,公司表沿用上一个例子中的表。根据公司编号(ID)查询公司信息及其员工信息。

1.2 相关概念

  • constructor - 用于在实例化类时,注入结果到构造方法中。
    • idArg - ID 参数;标记出作为 ID 的结果可以帮助提高整体性能;
    • arg - 将被注入到构造方法的一个普通结果。
  • id – 一个 ID 结果;标记出作为 ID 的结果可以帮助提高整体性能。
  • result – 注入到字段或 JavaBean 属性的普通结果。
  • association – 一个复杂类型的关联;许多结果将包装成这种类型。
    • 嵌套结果映射 – 关联可以是 resultMap 元素,或是对其它结果映射的引用。
  • collection – 一个复杂类型的集合。
    • 嵌套结果映射 – 集合可以是 resultMap 元素,或是对其它结果映射的引用。
  • discriminator – 使用结果值来决定使用哪个 resultMap。
    • case – 基于某些值的结果映射。
      • 嵌套结果映射 – case 也是一个结果映射,因此具有相同的结构和元素;或者引用其它的结果映射

** ResultMap 的属性列表**

属性 描述
id 当前命名空间中的一个唯一标识,用于标识一个结果映射。
type 类的完全限定名, 或者一个类型别名(关于内置的类型别名)。
autoMapping 如果设置这个属性,MyBatis 将会为本结果映射开启或者关闭自动映射。 这个属性会覆盖全局的属性 autoMappingBehavior。默认值:未设置(unset)。

二 操作步骤

由于上一个例子中已经创建数据库,因此不再创建,本例中仅需创建员工信息表和公司表。

2.1 创建表

-- company: table
CREATE TABLE `company`
(
    `id`   int(11)     NOT NULL AUTO_INCREMENT COMMENT '公司编号',
    `name` varchar(20) NOT NULL COMMENT '公司名称',
    PRIMARY KEY (`id`)
) ENGINE = InnoDB
  AUTO_INCREMENT = 4
  DEFAULT CHARSET = utf8 COMMENT ='公司信息表';

-- staff: table
CREATE TABLE `staff`
(
    `id`     int(11)     NOT NULL AUTO_INCREMENT COMMENT '员工编号',
    `name`   varchar(20) NOT NULL COMMENT '员工姓名',
    `age`    int(11)     NOT NULL COMMENT '员工年龄',
    `id_com` int(11)     NOT NULL COMMENT '公司编号',
    PRIMARY KEY (`id`),
    KEY `staff_company_id_fk` (`id_com`),
    CONSTRAINT `staff_company_id_fk` FOREIGN KEY (`id_com`) REFERENCES `company` (`id`)
) ENGINE = InnoDB
  AUTO_INCREMENT = 6
  DEFAULT CHARSET = utf8 COMMENT ='员工表';

-- No native definition for element: staff_company_id_fk (index)

INSERT INTO mybatis.company (id, name) VALUES (1, 'A_LTD');
INSERT INTO mybatis.company (id, name) VALUES (2, 'B_LTD');
INSERT INTO mybatis.company (id, name) 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值