mybatis中复杂查询(多对一和一对多)1-环境搭建
一.基本知识
(1).多对一的理解(以学生和老师为例子)
老师角度:一个老师会教多个学生【一对多】
学生角度:多个学生对应一个老师【多对一】
(2).如何处理:比较常见的两种方式,一个是联表查询,一个是子查询
二.举例说明
(1).数据库设计,执行SQL的时候不要直接全选一块执行,一个代码块一个代码块的执行,一起执行的话可能会报错,因为sql的执行速度很快,有可能在你创表之前就会执行insert语句。
//使用名为mybatis的数据库 USE mybatis //建表 CREATE TABLE `teacher` ( `id` INT(10) NOT NULL, `name` VARCHAR(30) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=INNODB DEFAULT CHARSET=utf8 //插入数据 INSERT INTO teacher(`id`, `name`) VALUES (1, "李老师"); CREATE TABLE `student` ( `id` INT(10) NOT NULL, `name` VARCHAR(30) DEFAULT NULL, `tid` INT(10) DEFAULT NULL, PRIMARY KEY (`id`), KEY `fktid` (`tid`), CONSTRAINT `fktid` FOREIGN KEY (`tid`) REFERENCES `teacher` (`id`) ) ENGINE=INNODB DEFAULT CHARSET=utf8 INSERT INTO `student` (`id`, `name`, `tid`) VALUES ("1", "小明", "1"); INSERT INTO `student` (`id`, `name`, `tid`) VALUES ("2", "小红", "1"); INSERT INTO `student` (`id`, `name`, `tid`) VALUES ("3", "小张", "1"); INSERT INTO `student` (`id`, `name`, `tid`) VALUES ("4", "小李", "1"); INSERT INTO `student` (`id`, `name`, `tid`) VALUES ("5", "小王", "1");