Ⅵ。一對多多表聯合查詢
一對多多表聯合查詢,我們将延用一對一多表聯合查詢的模式,通過一個小例子來說明。
我們先來想一下生活中一對多的場景,比如一個班級和多個學生,一個部門和多個職員等等。
這裡我們就班級和學生來說:
兩個需求: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}; >
剩下的内容希望大家當作練習完成了。
百看不如一練,代碼生活,要勤于動手。
<歡迎大家指正錯誤,完善細節>