Mybatis中的多表查询

本文介绍了Mybatis中处理多表查询的方法,包括一对多、多对一、一对一和多对多关系的分析,并通过用户和订单、人与身份证号、老师与学生等实例进行解释。特别提到Mybatis将多对一视为一对一处理的情况。详细步骤涉及建立数据库表、创建实体类、接口、配置文件,以及测试类的编写,展示了如何在查询用户时获取其账户信息,以及查询账户时获取所属用户信息。
摘要由CSDN通过智能技术生成

表之间关系分析:

  • 一对多
  • 多对一
  • 一对一
  • 多对多

举例:

  • 用户和订单就是一对多(一个用户可以下多个订单)
  • 订单和用户就是多对一(多个订单可以属于同一个用户)
  • 人和身份证号就是一对一(一个人只能有一个身份证号,一个身份证号只能属于一个人)
  • 老师和学生之间就是多对多(一个学生可以被多个老师教过,一个老师可以教多个学生)

特例:

  • 如果拿出每一个订单,它都只能属于一个用户。(所以mybatis就把多对一看成了一对一)。

Mybatis中的多表查询:

示例:用户和账户

  • 一个用户可以有多个账户
  • 一个账户只能属于一个用户(多个账户也可以属于一个用户)

步骤:

  1. 建立两张表:用户表,账户表(让用户表和账户表之间具备一对多的关系:需要使用外键在账户表中添加)
  2. 建立两个实体类:用户实体类,账户实体类(让用户和账户的实体类能体现出一对多的关系)
  3. 建立两个配置文件:用户的配置文件,账户的配置文件
  4. 实现配置:当我们查询用户时,可以同时得到用户下所包含的账户信息;当我们查询账户时,可以同时得到账户的所属用户信息

详细步骤:

  1.建立两张数据库表,用户表user、账户表account:

DROP TABLE IF EXISTS `user`;

CREATE TABLE `user` (
  `id` int(11) NOT NULL auto_increment,
  `username` varchar(32) NOT NULL COMMENT '用户名称',
  `birthday` datetime default NULL COMMENT '生日',
  `sex` char(1) default NULL COMMENT '性别',
  `address` varchar(256) default NULL COMMENT '地址',
  PRIMARY KEY  (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;



insert  into `user`(`id`,`username`,`birthday`,`sex`,`address`) values (41,'老王','2018-02-27 17:47:08','男','北京'),(42,'小二王','2018-03-02 15:09:37','女','北京金燕龙'),(43,'小二王','2018-03-04 11:34:34','女','北京金燕龙'),(45,'传智播客','2018-03-04 12:04:06','男','北京金燕龙'),(46,'老王','2018-03-07 17:37:26','男','北京'),(48,'小马宝莉','2018-03-08 11:44:00','女','北京修正');





DROP TABLE IF EXISTS `account`;

CREATE TABLE `account` (
  `ID` int(11) NOT NULL COMMENT '编号',
  `UID` int(11) default NULL COMMENT '用户编号',
  `MONEY` double default NULL COMMENT '金额',
  PRIMARY KEY  (`ID`),
  KEY `FK_Reference_8` (`UID`),
  CONSTRAINT `FK_Reference_8` FOREIGN KEY (`UID`) REFERENCES `user` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;



insert  into `account`(`ID`,`UID`,`MONEY`) values (1,46,1000),(2,45,1000),(3,46,2000);

  2.创建Maven工程(jar),pom.xml引入依赖 

    <dependencies>
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.4.5</version>
        </dependency>

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.6</version>
        </dependency>

        <dependency>
            <groupId>log4j</groupId>
            <artifactId>lo
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值