Mybatis中多對一與一對多
多對一的處理
在pojo中就有
Student
private String name;private String id;private Teacher teacher;
比如說多個學(xué)生對應(yīng)著一個老師
這樣我們就要使用多表查詢了
方法一:
按查詢嵌套處理

<mapper namespace="com.xflsh.mapper.StudentMapper"> ? ?<!-- ? ?需求:獲取所有學(xué)生及對應(yīng)老師的信息 ? ?思路: ? ? ? ?1. 獲取所有學(xué)生的信息 ? ? ? ?2. 根據(jù)獲取的學(xué)生信息的老師ID->獲取該老師的信息 ? ? ? ?3. 思考問題,這樣學(xué)生的結(jié)果集中應(yīng)該包含老師,該如何處理呢,數(shù)據(jù)庫中我們一般使用關(guān)聯(lián)查詢? ? ? ? ? ? ?1. 做一個結(jié)果集映射:StudentTeacher ? ? ? ? ? ?2. StudentTeacher結(jié)果集的類型為 Student ? ? ? ? ? ?3. 學(xué)生中老師的屬性為teacher,對應(yīng)數(shù)據(jù)庫中為tid。 ? ? ? ? ? ? ? 多個 [1,...)學(xué)生關(guān)聯(lián)一個老師=> 一對一,一對多 ? ? ? ? ? ?4. 查看官網(wǎng)找到:association – 一個復(fù)雜類型的關(guān)聯(lián);使用它來處理關(guān)聯(lián)查詢 ? ?--> ? ?<select id="getStudents" resultMap="StudentTeacher"> ? ? ?select * from student ? ?</select> ? ?<resultMap id="StudentTeacher" type="Student"> ? ? ? ?<!--association關(guān)聯(lián)屬性 ?property屬性名 javaType屬性類型 column在多的一方的表中的列名--> ? ? ? ?<association property="teacher" ?column="tid" javaType="Teacher" select="getTeacher"/> ? ?</resultMap> ? ?<!-- ? ?這里傳遞過來的id,只有一個屬性的時候,下面可以寫任何值 ? ?association中column多參數(shù)配置: ? ? ? ?column="{key=value,key=value}" ? ? ? ?其實(shí)就是鍵值對的形式,key是傳給下個sql的取值名稱,value是片段一中sql查詢的字段名。 ? ?--> ? ?<select id="getTeacher" resultType="teacher"> ? ? ? ?select * from teacher where id = #{id} ? ?</select> </mapper>
按結(jié)果嵌套處理
<mapper namespace="com.xflsh.mapper.TeacherMapper">
? ?<!--
? ?思路: ? ? ? ?1. 從學(xué)生表和老師表中查出學(xué)生id,學(xué)生姓名,老師姓名 ? ? ? ?2. 對查詢出來的操作做結(jié)果集映射 ? ? ? ? ? ?1. 集合的話,使用collection!
? ? ? ? ? ? ? ?JavaType和ofType都是用來指定對象類型的
? ? ? ? ? ? ? ?JavaType是用來指定pojo中屬性的類型
? ? ? ? ? ? ? ?ofType指定的是映射到list集合屬性中pojo的類型。
column在多的一方的表中的列名 ? ?-->
? ?<select id="getTeacher" resultMap="TeacherStudent"> ? ? ? ?select s.id sid, s.name sname , t.name tname, t.id tid ? ? ? ?from student s,teacher t ? ? ? ?where s.tid = t.id and t.id=#{id} ? ?</select>
? ?<resultMap id="TeacherStudent" type="Teacher">
? ? ? ?<result ?property="name" column="tname"/>
? ? ? ?<collection property="students" ofType="Student">
? ? ? ? ? ?<result property="id" column="sid" />
? ? ? ? ? ?<result property="name" column="sname" />
? ? ? ? ? ?<result property="tid" column="tid" />
? ? ? ?</collection>
? ?</resultMap>
</mapper>
鏈接:https://www.dianjilingqu.com/505039.html