博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
0049 MyBatis关联映射--一对一关系
阅读量:5295 次
发布时间:2019-06-14

本文共 2689 字,大约阅读时间需要 8 分钟。

世上的事务总不是孤立存在的,表现在Java类里面,则是类与类之间的关系,比如继承is-a、依赖use-a、关联has-a,反映在数据库中,则是表与表之间的关系,比如外键

关联关系存在着以下几种类型:一对一关系;一对多和多对一关系;多对多关系

一对一关系:

    对象A和对象B一一对应,最直观的例子:人和身份证的关系,一个人只拥有一张身份证,而一张身份证只会属于一个人
一对多和多对一关系:
    一个班级可以有多个学生;一个人可以有多本书;一个用户可以有多个订单
多对多关系:
    用户和商品:多个用户可以购买同一种商品;一个用户也可以购买多种商品

MyBatis可以处理这几种关联关系

比如一个身份证表和一个人的表,查询一个人的时候,顺便就把他的身份证信息查出来,看下面的sql:

DROP TABLE IF EXISTS `idc`;CREATE TABLE idc(    `pk` INT PRIMARY KEY AUTO_INCREMENT,    `id` VARCHAR(18) UNIQUE,    `name` VARCHAR(24),    `address` VARCHAR(64),    `birth` DATE);INSERT INTO idc(`id`,`name`,`address`,`birth`) VALUES('123456198501018376','王老五','A省B县','1985-01-01');INSERT INTO idc(`id`,`name`,`address`,`birth`) VALUES('123456198304018376','郭小二','X省Y县','1983-04-01');INSERT INTO idc(`id`,`name`,`address`,`birth`) VALUES('123456198807218376','李三','M省N县','1988-07-21');DROP TABLE IF EXISTS `person`;CREATE TABLE person(    `pk` INT PRIMARY KEY AUTO_INCREMENT,    `name` VARCHAR(24),    `age` INT,    `salary` INT,    `idc_pk` int UNIQUE,    FOREIGN KEY (idc_pk) REFERENCES idc(pk)   /*将身份证idc表的主键作为人person表的外键*/);INSERT INTO person(`name`,`age`,`salary`,`idc_pk`) VALUES('王老五','32','7550','1');INSERT INTO person(`name`,`age`,`salary`,`idc_pk`) VALUES('郭小二','34','8350','2');INSERT INTO person(`name`,`age`,`salary`,`idc_pk`) VALUES('李三','29','5150','3');

实体类Person和IDC

package net.sonng.onetoone;public class Person {    private int pk;    private String name;    private int age;    private int salary;    private IDC idc;      //注意这跟表的idc_pk没有对应,而是映射到idc表里面的一条身份证信息记录    //省略getter和toString}
package net.sonng.onetoone;public class IDC {    private int pk;    private String id;    private String name;    private String address;    private String birth;    //省略getter和toString}

下面是sql语句

PersonDao略

测试类:

package net.sonng.test;import net.sonng.onetoone.Person;import net.sonng.onetoone.PersonDao;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;public class Test {    public static void main(String[] args){        ApplicationContext ac=new ClassPathXmlApplicationContext("ac.xml");        PersonDao personDao=ac.getBean("personDao",PersonDao.class);                Person per=personDao.selectPersonByPk(2);        System.out.println(per);        System.out.println(per.getIdc());    }}

转载于:https://www.cnblogs.com/sonng/p/6610646.html

你可能感兴趣的文章
ARDUINO W5100 WebServer测试
查看>>
作业2
查看>>
mysql分页存储过程
查看>>
一致性hash和solr千万级数据分布式搜索引擎中的应用
查看>>
java之maven之maven的使用
查看>>
HNOI2007 分裂游戏
查看>>
推荐几个不错的 java 教程和 HTML 教程
查看>>
PWM
查看>>
OC的基础语法(三)
查看>>
NPOI生成EXCEL
查看>>
hdu 4312 Meeting point-2(4级)
查看>>
hdu 2072 1106学一波字符串分割,C语言与C++两种方法
查看>>
程序猿随想
查看>>
Coding Standards & Best Practices
查看>>
MVC快速分页
查看>>
JS快速排序 希尔排序 归并排序 选择排序
查看>>
plsql auto 常用语法
查看>>
WIN7 如何将BAT文件附加到任务栏
查看>>
数据库 核心概念 总结
查看>>
tomcat安装
查看>>