日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

NHibernate Step by Step (四)Session、Query及

系統 2284 0
我們總結一下在第二篇中的 Session 操作:

1. 獲取記錄

Personperson = (Person)session.Get( typeof (Person), 1 );

2. 保存記錄

session.Save(person);

3. 刪除記錄

Personperson = (Person)session.Get( typeof (Person), 1 );

session.Delet(person);

我們再來看看其它幾種方式:

1. Load

Personperson = (Person)session.Load( typeof (Person), 1 );

是不是感覺和 Get 一樣?其實……很不一樣!

Get 在找不到對象時會返回一個 null 引用,而 Load 則會拋出一個 ObjectNotFoundException ,所以,不應該用 Load 來判斷記錄是否存在。另外還有兩條非常重要的區別,我們將放在高級話題討論。

2. Query

IListlist = session.CreateQuery(“fromPerson”).List();

Personperson
= (Person)list[ 0 ];

~!#@^?? from Person??#$@*&^$

這是蝦米??

好象有點象 SQL ,不過少了個 select 啊!而且也沒有表名啊!

這就是久負盛名的 HQL —— Hibernate Query Language!

HQL 實際上是基于對象查詢的一種仿 SQL 腳本,在運行期間, Hibernate 會自動根據映 射關系將之轉換為真正的 SQL 語句來執行。

什么?又一種 SQL ?不是說使用 O/R Mapping 就可以不寫 SQL 了嗎,怎么又多了一種 SQL ”??

當然不是這樣了,之所以產生 HQL ,就是為了能夠更加靈活更加面向對象地操作數據 ,而且你不應該把 HQL 當成一種新的 SQL ,因
為它——太簡單好學了!

看看下面的 HQL ,是不是很熟悉??

select p.Name from Person as p where p.Id = 1
select Name from Person where Age > 20
select Id,Name from Person where Id > 1 and Age > 20


認出來老兄弟了吧!!

(從這里開始,我們給 person 表添加了一個 age 列,請注意)

ok ,我們這里就詳細解釋。

“from Person ” 意思是取出 Person 類映射的 person 表中的所有記錄,對應的 SQL 是:

Select * from person”

還可以加上別名: from Person (as) p = Select * from person (as) p

這樣一解釋就很清楚了吧!一句話,你便已經掌握了 HQL 50%

而“ select Name from Person” ,當然也就是只取 person 表的 name 列了!

你所知道的 where 中的 and or is like between > < = 等等都可以直接拿來使用,

如下:

select p.Name from Personp where p.Age > 20

from Personp where p.Age between 20 and 30

from personp where p.Age in ( 20 , 30 )

from personp where p.Name is null

from personp where p.Name like “Jaki %

注意:字段大小寫應該盡量跟屬性名稱保持一致,尤其是在使用別名的情況下,如:

p.age 將會導致一個“無法解析屬性 age “的錯誤。但是在不使用別名的情況下我的機器 上” age “和 ’Age “一樣可以通過,雖然如此,
建議還是跟類文件保持一致。

執行 HQL 是通過 IQuery 來實現的,如下是詳細的寫法:

IQueryquery = session.CreateQuery(“fromPerson”);

IListlist
= query.List();


通過 session 來創建一個 query ,然后執行 query List 方法,返回符合條件的 IList

如上面的“ from Person “,將返回 person 表的所有記錄, list 中將包含映射到 Person

的對應表中所有記錄的對象。

好了,這一篇就講這么多,我們下次再接著練習。
任何建議或者批評,請 e abluedog@163.com

NHibernate Step by Step (四)Session、Query及HQL


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 平昌县| 勐海县| 华坪县| 顺昌县| 清镇市| 甘肃省| 肃北| 长沙县| 临泉县| 化隆| 阿拉善左旗| 邵阳县| 稷山县| 锦屏县| 南京市| 福州市| 贵德县| 台东县| 疏附县| 赤峰市| 临安市| 保康县| 江陵县| 丹江口市| 周口市| 永顺县| 临泉县| 四子王旗| 嵊州市| 玛纳斯县| 咸丰县| 青岛市| 乌海市| 应用必备| 呼图壁县| 隆回县| 鄂伦春自治旗| 环江| 休宁县| 资阳市| 岳普湖县|