1. 程式人生 > >hql關聯表、map/list查詢

hql關聯表、map/list查詢

介紹下關於HQL中的關聯表查詢的用法吧,這個算是我自己摸索嘗試出來的,也許不是最優化的,但還是可以和大家分享探討下

這次主要是要使用關聯表查詢,專案中是使用的spring mvc+hibernate

關聯表查詢,顧名思義就是查詢結果設計到多個表的資訊,且彼此間有一定的關聯

在spring mvc中使用hql關聯表查詢的方法:

拿當前我們系統當中的訂單表舉例說明,當前記錄中大部分記錄的是物件ID,現在我要一併查詢訂單資訊以及訂單中關聯的買家資訊,步驟如下:

1.      首先宣告一個類如com.zhiyuan.base.model.OrderView

a)        私有變數有String id, String remark, int orderStatus, BuyerUser buyer等等,並進行getter&&setter方法繫結

b)        建立建構函式OrderView(String id, String remark, int orderStatus, BuyerUser buyer),然後在建構函式中進行私有變數的賦值

c)        注意:這個類不要打註解@Entity/@Table,因為這只是個臨時的實體類,如果打註解後會在資料庫中自動生成表的

d)        重點宣告一點:在建構函式中可以傳參基本型別的資料,也可以傳參集合甚至自定義的物件型別


2.      建立對應的OrderView Dao,依照以往的方式宣告dao以備接下來的service中呼叫


3.      準備hql

a)        準備hql主體:select new com.zhiyuan.base.model.OrderView(order.id, order.remark, order.orderStatus,buyer) from GoodsOrder order, BuyerUser buyer where order.buyerId = buyer.id

b)        當然where 後面可以繼續補充檢索條件等


4.      在Service中呼叫OrderViewDao執行查詢hql的操作,這樣就會將查詢結果自動封裝為OrderView物件了

在spring mvc中使用hql用(new map) 方法統計分組等資訊:

1.      準備hql

a)        select new map(id, status,count(*) as number, sum(price) as price) from GoodsOrder

b)        在where條件中拼寫檢索條件排列順序等


2.      執行hql,用hibernateTemplate執行此hql,然後將結果進行處理

List<Map<String,Object>> list = hibernateTemplate.find(hql);

for(Map<String, Object> item : allList)

                   {

                    String id = item.get("id").toString();

                    String remark = item.get(“remark”).toString();

                    int number =(int) item.get(“number”);

                    int price = (int)item.get(“price”);

                    //自行處理取出的資料

           }

 


在spring mvc中使用hql用(new List) 方法統計分組等資訊:

1.準備hql

a)        select new List(id, status,count(*), sum(price)) from GoodsOrder

b)        在where條件中拼寫檢索條件排列順序等

2.執行hql,用hibernateTemplate執行此hql,然後將結果進行處理

List<List<Object>list = hibernateTemplate.find(hql);

for (List<Object> item : allList)

                   {

                    String id = item.get(0).toString();

                    String remark = item.get(1).toString();

                    int number = (int)item.get(2);

                    int price = (int)item.get(3);

                    //自行處理取出的資料

                   }

相關推薦

hql關聯map/list查詢

介紹下關於HQL中的關聯表查詢的用法吧,這個算是我自己摸索嘗試出來的,也許不是最優化的,但還是可以和大家分享探討下 這次主要是要使用關聯表查詢,專案中是使用的spring mvc+hibernate 關聯表查詢,顧名思義就是查詢結果設計到多個表的資訊,且彼此間有一

【面試必讀(程式設計基礎)】雜湊Map和字典

主要來自於兩篇文章 https://www.zhihu.com/question/27581780 http://www.oschina.net/translate/hashtable-vs-dictionary?nocache=1492512523856 Map和Dic

Hibernate查詢HQL查詢

關於HQL語句介紹使用可以檢視這裡,今天主要介紹其在多表系對映中的應用。 常用的sql語句多表查詢有以下幾種(以customers 和orders 表為例): 內連線查詢 顯示內連線 select * from customers c inner j

hql關聯模糊查詢

public Page<AlarmPushRecord> findByPage(int size, int index, String startAt, String endAt, String content) throws ParseException {    

ListSetMap下各類型的對比

hashtable class ray hashmap 速查 使用 線程同步 highlight ash 1.List和Set: List: 元素有放入順序,元素可重復,查找效率高,插入刪除效率低; Set: 元素無放入順序,元素不可重復,(元素雖然無順序,但元素在Set

leetcode鏈--6linked-list-cycle-ii(有環單鏈環的入口結點)

pre you head lis 頭結點 tex -a init int 題目描述 Given a linked list, return the node where the cycle begins. If there is no cycle, returnnull

sort-list——鏈快慢指針找中間歸並排序

val 排序。 rtl != spa 判斷 nbsp node ace Sort a linked list in O(n log n) time using constant space complexity. 鏈表,快慢指針找中點,歸並排序。 註意判斷條件fast-

ListSetMap集合大雜燴

鏈接 collect hid 鍵值 oar text 同步 二分 實現 java集合主要分三種:list、set、map;當中list和set都繼承自Collection接口,兩者最大差別是set不能包括反復元素 list的經常使用實現類有: Ar

list和setmap的差別叠代器讀取數據

lin style tor shm obj span col ring value package collectiondemo; import java.util.ArrayList; import java.util.LinkedList; import java.

HQL查詢

1.0 數組 sys 調用 分享 outer http 語句 得到 ------------------siwuxie095 HQL 多表查詢 以客戶和聯系人為例(一對多) 1、內

Sql語句優化-查詢不同行NOT INNOT EXISTS連接查詢Left Join

exists join ngs sdn 連接查詢 blog 建議 開發 word 在實際開發中,我們往往需要比較兩個或多個表數據的差別,比較那些數據相同那些數據不相同,這時我們有一下三種方法可以使用:1. IN或NOT IN,2. EXIST或NOTEXIST,

ListMapset的加載因子,默認初始容量和擴容增量

nbsp 同步 ble 分配 eat 提高 調用 width 可見 首先,這三個概念說下。初始大小,就是創建時可容納的默認元素個數;加載因子,表示某個閥值,用0~1之間的小數來表示,當已有元素占比達到這個閥值後,底層將進行擴容操作;擴容方式,即指定每次擴容後的大小的規則,比

sql 異常<除非另外還指定了 TOPOFFSET 或 FOR XML,否則,ORDER BY 子句在視圖內聯函數派生查詢和公用表表達式中無效。>

select sel top percent 異常 子句 cor 查詢 表達 問題:當子查詢內存在ORDER BY 字句時查詢會報錯 SQL: SELECT * FROM (   SELECT * FROM USER ORDER BY USER_CORD ) S. 解

ListMapSet三個接口,存取元素時,各有什麽特點?

bsp http www. bject map.entry 指定 aid spa add List與Set都是單列元素的集合,它們有一個功共同的父接口Collection。 Set裏面不允許有重復的元素, 存元素:add方法有一個boolean的返回值,當集合中沒有某個元素

MyBatis學習總結——實現關聯查詢(轉)

得到 into primary 字符串 student prim oci ssr ret 原文鏈接:孤傲蒼狼 一、一對一關聯 1.1、提出需求   根據班級id查詢班級信息(帶老師的信息) 1.2、創建表和數據   創建一張教師表和班級表,這裏我們假設一個老師只負責教一個

ListSetMap常見集合遍歷總結

排序 out java tlab vhdl for var 定義 word Java中的集合有三大類,List、Set、Map,都處於java.util包中,List、Set和Map都是接口,不能被實例化,它們的各自的實現類可以被實例化。List的實現類主要有ArrayLi

laravel-- 在laravel操作redis數據庫的數據類型(string哈希無序集合list有序集合)

sadd cti string類型 數據 http hal 基本 nice 隊列 安裝redis和連接redis數據庫 在controller頭部引入 一.基本使用 1 public function RedisdDbOne() { 2

【redis,1】java操作redis: 將stringlistmap自己定義的對象保存到redis中

n) spa 存儲 div ber sys mil 操作 write 一、操作string 、list 、map 對象 1、引入jar: jedis-2.1.0.jar 2、代碼 /

oracle之子查詢創建用戶創建約束

pre 條件 不為 varchar 作用 rim 修改 特點 刪除一個用戶 子查詢 子查詢可以分為單行子查詢和多行子查詢 單行子查詢   [1] 將一個查詢的結果作為另外一個查

Java源碼解析容器類ListSetMap

增刪 相同 數組 hashtable 最終 效率 類對象 rem 重復 1:集合 Collection(單列集合) List(有序,可重復) ArrayList 底層數據結構是數組,查詢快,增