Hibernate封裝的查詢方法的皮毛介紹

(小碼哥學員作品)

現在市面上的很多公司都是使用封裝好的Hibernate進行開發,原因就是速度,方便,封裝的方法非常豐富,雖然說mybatis效率很高但是由於其的複雜程度和程序員的接受程度不同所以用的公司也是看不同情況!今天不贅述,只談Hibernate.

本人現在進行的是商品庫的開發,因為公司的註冊用戶不是很多所以對於性能的要求不是特別高,所以在接下來我講的東西中如果有性能影響的請自行忽略或者指正出來,非常感謝!

下圖是一個使用hibernate進行查詢的實例:

該方法的作用是根據商品的類目和商品的銷售地址進行對商品的查詢("pager"是進行分頁查詢,"order"是排序欄位,因與介紹的無太大關係所以不進行贅述) .如果對商品的基本的數據結構不熟悉的可以百度sku,spu等進行查詢對應關係.(後續進行對商品庫的數據結構進行介紹).

Advertisements

這個方法相當於是對指定的實體類進行查詢前的封裝,然後對其進行查詢的參數進行添加,最後通過criteriaPagerSearch進行查詢.(對上面這段代碼有疑惑的可以參考https://zhidao.baidu.com/question/497420874786146164.html).

此段代碼的意思是:對查詢對象添加查詢條件,對欄位"status"進行條件封裝,使用的Restrictions.in是指該欄位匹配的條件在對應的集合中匹配都可以.

在第一個判斷代碼塊中,同樣進行了對ProdSkuProp該對象進行條件查詢的實體封裝.

這裡應為不再是可以等於多個值的判斷所以使用的不是Restrictions.in而是使用的是eq進行等同的判斷.

Advertisements

因為這裡我們的查詢是需要通過兩張表進行查詢的一張是ProdSku一張是ProdSkuProp進行的查詢,所以我們需要將兩張表進行關聯,使用的是上面的方法,將兩張表的兩個欄位進行關聯.

這裡進行的是對關聯的結果ProdSkuProp在添加了條件之後再進行查詢后必須要在ProdSku這個實體查詢之後依舊存在(這裡本來是想使用數字替代Projections.id()以提高效率,但是在Hibernate封裝的方法中沒有找到更為高效的替代方式,所以最快捷的就是使用id進行替代了).

最後使用criteriaPageSearch進行查詢分頁查詢.

詳細代碼可登陸 http://bbs.520it.com/forum.php?mod=viewthread&tid=4071 查看。

Advertisements

你可能會喜歡