一.
criteria查詢:編譯期發現錯誤
select u from user u where u.old>20
//拼裝其工廠
criteriabuilder cb=entitymanager.getcriteriabuider();
//拼裝器
criteriaquery cq=cb.createquery();
rootroot=cq.from(user.class);
cq.select(root);
//條件
predicate pre =cb.greaterthan(root.get("old").as(integer.class),20);
/* predicate pre =cb.greaterthan(root.get("old").as(integer.class), cb.parameter(integer.class,"old");*/
cq.where(pre);
//傳進去
query query=entitymanager.createquery(cq);
/*query.setparameter("old",20);*/
listusers=query.getresultlist();
return users;
查詢屬性:cq.multiselect(root.get("old"),root.get("name"));
注意返回值:list若想返回依舊是實體:不要multiselect
cq.select(cb.construct(user.class,root.get("old"),root.get("name")));
懶載入:語句放在root root = cq.from(user.class);後。
fetch rootfetch = root.fetch(「interests」);
若連線:語句放在root root = cq.from(user.class);後。
root.join(「interests」,jointype.left);
排序:放在where後
cq.orderby(cb.desc(root.get(「old」)),cb.asc(root.get(「worktime」)));
若條件有多個,則cq.where(pre,pre1);
若要條件與或非:條件後
cq.and(pre,pre1)
cq.or(pre,pre1)
cq.where(cq.or(pre,pre1));
@query和@namedquery
dao層方法:
@query(value="select u from user u where u.name like :name")
public listfinduserbyname(@param("name")string name);
若原生態,要在sql語句後nativequery=true
@namedquery:bean管理器
model bean:user
@namedqueries()
dao層呼叫:注入bean管理器後
@transactional
public listfindall()
JPA中JPQL的子查詢
jpa中jpql的子查詢 示例 1.employee實體類 entity public class employee public void setempid integer empid public string getempaddress public void setempaddress st...
MySQL高階(十二) 全域性查詢日誌
前言 全域性查詢日誌用於儲存所有的sql執行記錄,該功能主要用於測試環境,在生產環境中永遠不要開啟該功能。1.通過my.cnf配置開啟該功能。注 對my.cnf檔案配置後,需重啟mysql。通過命令檢視全域性查詢日誌是否開啟成功。檢視全log globalquery.log檔案中的內容。該log檔案...
Hive總結(十二)Hive查詢高階
通過hive提供的order by子句可以讓最終的輸出結果整體有序。但是因為hive是基於hadoop之上的,要生成這種整體有序的結果,就必須強迫hadoop只利用乙個reduce來完成處理。這種方式的 就是回降低效率。如果你不需要最終結果整體有序,你就可以使用sort by子句來進行排序。這種排序...