Ⅵ。一对多多表联合查询
一对多多表联合查询,我们将延用一对一多表联合查询的模式,通过一个小例子来说明。
我们先来想一下生活中一对多的场景,比如一个班级和多个学生,一个部门和多个职员等等。
这里我们就班级和学生来说:
两个需求:1.给定班级号,查询班级记录和它的学生信息;2.给定学生号查询学生记录和它对应的班级信息。
希望大家仔细阅读代码的注释,同时需要注意的是,这里的大部分内容,我认为你是已经掌握了一定的 MyBatis/Java知识的 。如果没有,建议先看一下前面专题的文章,然后来看这里的文章你就会轻松很多。
项目目录:
这里只给出,给定班级号,查询班级记录和它的学生信息的ClassMapper.xml文件内容:
mybatis-config.xml已经是我们的老朋友了,这里就不做过多的解释了,直接纯粹的代码了。
mybatis-config.xml
<?xml version="1.0" encoding="UTF-8" ?><configuration> <settings> <setting name="logImpl" value="LOG4J"/> <setting name="lazyLoadingEnabled" value="true"/> <setting name="aggressiveLazyLoading" value="false"/> <setting name="lazyLoadTriggerMethods" value="clone"/> settings> <environments default="development"> <environment id="development"> <transactionManager type="JDBC">transactionManager> <dataSource type="POOLED"> <property name="driver" value="com.mysql.cj.jdbc.Driver"/> <property name="url" value="jdbc:mysql://localhost:3306/jdbc?serverTimezone=CST"/> <property name="username" value="root"/> <property name="password" value="beauty"/> dataSource> environment> environments> <mappers> <mapper resource="mapper/ClassMapper.xml">mapper> mappers>configuration>
ClassMapper.xml
<?xml version="1.0" encoding="UTF-8" ?> select tid,tname from student where cname = #{cname} select cname,cloc from class where cname = #{cname} select distinct * from class c,student s where c.cname = s.cname and c.cname = #{cname}; >
剩下的内容希望大家当作练习完成了。
百看不如一练,代码生活,要勤于动手。
<欢迎大家指正错误,完善细节>