ibatis 對象一對多解決N+1問題

有兩張表:student(id,name,num,classes_id)、classes(id,description),一個學生只屬於某一個班級,但某一個班下可以有多個學生

classes類中須有List<Student> studentList對象      簡單的set(),get()方法

student_id
sqlMap.xml配置
groupBy="id":表示根據班級的id支裝配student,只要有學生班級Id相等的數據都裝配到studentList對象中
<resultMap class="classes" id="classesResult" groupBy="id"> 注意不能用select * 代替字段,有可能會出不來,須把字段id寫在語句中,儘量property和column中字段相等。這樣會少出現問題。
<result property="id" column="id" /> <result property="description" column="description" />
最主要是這段代碼,property是班級中studentList對象,column是班級id:用他去裝配studentList對象,groupBy是根據傳的column去分組裝配。resultMap是新定義一個
map放student對象。resultMap="空間名.studentResult",不然可能會找不到這個map錯誤。
  <result property="studentList" column="id" resultMap="空間名.studentResult"/> </resultMap> student對象 <resultMap class="student" id="studentResult">
<result property="id" column="
student_id" /> <result property="name" column="name" /> <result property="num" column="num" /> </resultMap> <select id="getClasses" parameterClass="classes" resultMap="classesResult">
爲student中id重命名,以區分字段重名
 select c.id,c.description,s.id as student_id,s.name,s.num from classes c join student s on s.classes_id = c.id where id = #id# </select>
以上就是ibatis一對多映射解決方案。

參考:http://blog.csdn.net/sanyuesan0000/article/details/21728463

參考:http://blog.csdn.net/Muspelheim/article/details/50485620#comments

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章