IBatis.Net学习笔记(四)--再谈查询
生活随笔
收集整理的這篇文章主要介紹了
IBatis.Net学习笔记(四)--再谈查询
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
在上一篇文章中我提到了三種方式,都是各有利弊:
第一種方式當數據關聯很多的情況下,實體類會很復雜;
第二種方式比較靈活,但是不太符合OO的思想(不過,可以適當使用);
第三種方式最主要的問題就是性能不太理想,配置比較麻煩。
下面是第四種多表查詢的方式,相對第二種多了一點配置,但是其他方面都很好
(當然可能還有其他更好地解決方法,希望能多提寶貴意見-_-)
例子還是一樣:兩張表Account和Degree,使用Account_ID關聯,需要查出兩張表的所有紀錄
首先:修改實體類,增加以下屬性:
????????private?Degree?_degree;
????????public?Degree?Degree
????????{
????????????get
????????????{
????????????????return?_degree;
????????????}
????????????set
????????????{
????????????????_degree?=?value;
????????????}
????????}(和第三種方法一樣)
然后:修改配置文件,這也是最重要的地方(PS:IBatis.Net中的配置文件真的很強)
在resultMaps節加入:
????<resultMap?id="com2result"??class="Account"?>
??????<result?property="Id"???????????column="Account_ID"/>
??????<result?property="FirstName"????column="Account_FirstName"/>
??????<result?property="LastName"?????column="Account_LastName"/>
??????<result?property="EmailAddress"?column="Account_Email"?nullValue="no_email@provided.com"/>
??????<result?property="Degree"??resultMapping="Account.Degree-result"/>
????</resultMap>
????<resultMap?id="Degree-result"??class="Degree">
??????<result?property="Id"???????????column="Account_ID"/>
??????<result?property="DegreeName"????column="DegreeName"/>
????</resultMap>這里最主要的就是使用了resultMapping屬性,resultMapping="Account.Degree-result",其中Account是當前配置文件的namespace:
<sqlMap namespace="Account"? ......
在statements節加入:
????<select?id="GetCom2Tables"
?????resultMap="com2result">
??????select?Accounts.*,?Degree.*
??????from?Accounts,Degree
??????where?Accounts.Account_ID?=?Degree.Account_ID
????</select>這樣就可以隨心所欲的寫自己需要的sql,性能也很好,不會出現第三種方法中的1+n條的查詢語句了。
第一種方式當數據關聯很多的情況下,實體類會很復雜;
第二種方式比較靈活,但是不太符合OO的思想(不過,可以適當使用);
第三種方式最主要的問題就是性能不太理想,配置比較麻煩。
下面是第四種多表查詢的方式,相對第二種多了一點配置,但是其他方面都很好
(當然可能還有其他更好地解決方法,希望能多提寶貴意見-_-)
例子還是一樣:兩張表Account和Degree,使用Account_ID關聯,需要查出兩張表的所有紀錄
首先:修改實體類,增加以下屬性:
????????private?Degree?_degree;
????????public?Degree?Degree
????????{
????????????get
????????????{
????????????????return?_degree;
????????????}
????????????set
????????????{
????????????????_degree?=?value;
????????????}
????????}(和第三種方法一樣)
然后:修改配置文件,這也是最重要的地方(PS:IBatis.Net中的配置文件真的很強)
在resultMaps節加入:
????<resultMap?id="com2result"??class="Account"?>
??????<result?property="Id"???????????column="Account_ID"/>
??????<result?property="FirstName"????column="Account_FirstName"/>
??????<result?property="LastName"?????column="Account_LastName"/>
??????<result?property="EmailAddress"?column="Account_Email"?nullValue="no_email@provided.com"/>
??????<result?property="Degree"??resultMapping="Account.Degree-result"/>
????</resultMap>
????<resultMap?id="Degree-result"??class="Degree">
??????<result?property="Id"???????????column="Account_ID"/>
??????<result?property="DegreeName"????column="DegreeName"/>
????</resultMap>這里最主要的就是使用了resultMapping屬性,resultMapping="Account.Degree-result",其中Account是當前配置文件的namespace:
<sqlMap namespace="Account"? ......
在statements節加入:
????<select?id="GetCom2Tables"
?????resultMap="com2result">
??????select?Accounts.*,?Degree.*
??????from?Accounts,Degree
??????where?Accounts.Account_ID?=?Degree.Account_ID
????</select>這樣就可以隨心所欲的寫自己需要的sql,性能也很好,不會出現第三種方法中的1+n條的查詢語句了。
轉載于:https://www.cnblogs.com/gooddasenlin/archive/2011/04/06/2007143.html
總結
以上是生活随笔為你收集整理的IBatis.Net学习笔记(四)--再谈查询的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java线程池ThreadPoolExe
- 下一篇: 线性规划实战—投资的收益和风险