------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥-------------
先简单提及一下关联查询的分类
1.一对多
1.1单条SQL操作的
1.2多条SQL操作的
2.多对一
2.1单条SQL操作的
2.1多条SQL操作的
3.多对多(类似一对多)
4.自关联(也有点类似一对多)
下面是具体实现,用真实代码带入进去(数据表和实体类和测试方法都给发出来,更多的要关注到xml中的使用)
我先把用到的数据库的脚本发一下,里面有测试数据,我折起来,需要使用的可以自行提取
/* SQLyog v10.2 MySQL - 5.6.24 : Database - s2228 ********************************************************************* */ /*!40101 SET NAMES utf8 */; /*!40101 SET SQL_MODE=''*/; /*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */; /*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */; /*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */; /*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */; CREATE DATABASE /*!32312 IF NOT EXISTS*/`s2228` /*!40100 DEFAULT CHARACTER SET utf8 */; USE `s2228`; /*Table structure for table `book` */ DROP TABLE IF EXISTS `book`; CREATE TABLE `book` ( `bookID` int(11) NOT NULL AUTO_INCREMENT, `bookName` varchar(32) DEFAULT NULL, `bookAuthor` varchar(32) DEFAULT NULL, `bookPrice` int(11) DEFAULT NULL, PRIMARY KEY (`bookID`) ) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8; /*Data for the table `book` */ insert into `book`(`bookID`,`bookName`,`bookAuthor`,`bookPrice`) values (1,'程序员的人生','老原教育',500),(2,'皮的修养','郭彦',999),(3,'如何成为一代大牛','迟总',500),(4,'心想事成','孟六',999),(5,'心想事成','孟六',999),(6,'心想事成','孟七',999),(7,'心想事成','孟七',999),(8,'心想事成','孟七',999); /*Table structure for table `category` */ DROP TABLE IF EXISTS `category`; CREATE TABLE `category` ( `cid` int(11) NOT NULL AUTO_INCREMENT, `cname` varchar(32) DEFAULT NULL, `pid` int(11) NOT NULL, PRIMARY KEY (`cid`) ) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8; /*Data for the table `category` */ insert into `category`(`cid`,`cname`,`pid`) values (1,'图书',0),(2,'青年图书',1),(3,'少儿图书',1),(4,'我爱科学',3),(5,'服装',0),(6,'羽绒服',5); /*Table structure for table `dept` */ DROP TABLE IF EXISTS `dept`; CREATE TABLE `dept` ( `deptNo` int(8) NOT NULL AUTO_INCREMENT, `deptName` varchar(32) DEFAULT NULL, PRIMARY KEY (`deptNo`) ) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8; /*Data for the table `dept` */ insert into `dept`(`deptNo`,`deptName`) values (1,'开发部'); /*Table structure for table `emp` */ DROP TABLE IF EXISTS `emp`; CREATE TABLE `emp` ( `empNo` int(8) NOT NULL AUTO_INCREMENT, `empName` varchar(32) DEFAULT NULL, `deptNo` int(8) NOT NULL, PRIMARY KEY (`empNo`), KEY `emp_deptNo_Fk_dept_deptNo_pk` (`deptNo`), CONSTRAINT `emp_deptNo_Fk_dept_deptNo_pk` FOREIGN KEY (`deptNo`) REFERENCES `dept` (`deptNo`) ) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8; /*Data for the table `emp` */ insert into `emp`(`empNo`,`empName`,`deptNo`) values (1,'孟六',1),(2,'孟六',1); /*Table structure for table `student` */ DROP TABLE IF EXISTS `student`; CREATE TABLE `student` ( `sid` int(11) NOT NULL AUTO_INCREMENT, `sname` varchar(32) NOT NULL, PRIMARY KEY (`sid`) ) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8; /*Data for the table `student` */ insert into `student`(`sid`,`sname`) values (1,'孟六'),(2,'王五'),(3,'赵七'),(4,'郭皮'); /*Table structure for table `teacher` */ DROP TABLE IF EXISTS `teacher`; CREATE TABLE `teacher` ( `tid` int(11) NOT NULL AUTO_INCREMENT, `tname` varchar(32) NOT NULL, PRIMARY KEY (`tid`) ) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8; /*Data for the table `teacher` */ insert into `teacher`(`tid`,`tname`) values (1,'迟老师'),(2,'原老师'),(3,'付老师'),(4,'超哥'); /*Table structure for table `teacher_student` */ DROP TABLE IF EXISTS `teacher_student`; CREATE TABLE `teacher_student` ( `id` int(11) NOT NULL AUTO_INCREMENT, `tid` int(11) NOT NULL, `sid` int(11) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8; /*Data for the table `teacher_student` */ insert into `teacher_student`(`id`,`tid`,`sid`) values (1,1,1),(2,1,3),(3,2,1),(4,4,1); /*!40101 SET SQL_MODE=@OLD_SQL_MODE */; /*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */; /*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */; /*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;