ibatis 一對多關聯

來源:互聯網
上載者:User

    以前一直在用著ibatis,但是很少去研究它的一對多,即使用到了也是採用一種很笨重的方法:先用statement讀取資訊,在手動調用另外的statement跟據關聯資訊去取值。

    現在又兩張表:teacher</p><p>id<br />name<br />numberclassInfo</p><p>id<br />number<br />teacherNo 其中teacher和classInfo是1:n,teacher.id = classInfo.teacherNo。

model對象分別聲明為:public class Teacher<br />{<br /> private int id;<br /> private String name;<br /> private long number;</p><p> private List<ClassInfo> classList;</p><p> set/get方法省略</p><p>}public class ClassInfo<br />{<br /> private int id;<br /> private long number;<br /> private logn teacherNo;</p><p> set/get方法省略<br />} 。

 

準備工作完成,我們來看sql.xml檔案:

 

<sqlMap namespace="TeacherInfo"><br /> <typeAlias alias="teacher" type="teacherModel路徑"/><br /> <typeAlias alias="classinfo" type="classinfoModel 路徑"/></p><p> <resultMap id="teacherResult" class="teacher"><br /> <result property="id" colum="id"/><br /> <result property="name" colum="name"/><br /> <result property="number" colum="number"/><br /> <result property="classList" colum="number"<br /> select="TeacherInfo.getClassinfoByNum"/><br /> </resultMap></p><p> <statement id="getClassinfoByNum" parameterClass="long" resultClass="classinfo"><br /> select<br /> id,number,teacherNo<br /> from<br /> classInfo<br /> where<br /> teacherNo = #teacherNo#<br /> </statement></p><p> <statement id="getList" parameterClass="String" resultMap="teacherResult"></p><p> select<br /> id,name,number<br /> from<br /> teacher<br /> where<br /> name = #name#</p><p> </statement></p><p></sqlMap>

 

 

 

 在java檔案中取值:

public List getList(String name){</p><p> List list = this.getSqlMapClientTemplate().queryForList("TeacherInfo.getList",name);<br /> for(int i=0;i<list.size;i++)<br /> {<br /> Teacher tt =(Teacher)list.get(i);<br /> //這裡得到的就是教師資訊。<br /> for(int j=0;j<tt.getClassList.size();j++)<br /> {<br /> ClassInfo ci = (ClassInfo)tt.getClassList().get(j);<br /> // 這裡得到的就是此教師下的班級資訊。<br /> }<br /> }</p><p>}

 

都是項目中用到的知識點,很簡單。以資鼓勵,聊以共勉。

 

 

 

 

 

 

  

 

 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.