Hibernate查詢方式

1.對(duì)象查詢導(dǎo)航

2.OID查詢

3.hql查詢

4.QBC查詢

5.本地sql查詢



1.對(duì)象查詢導(dǎo)航 范例

//根據(jù)id查詢某個(gè)客戶,再查詢這個(gè)客戶里面的所有聯(lián)系人
Customer customer = session.get(Customer.class,1);

Set<LinkMan> linkman = customer.getSetLinkMan();


2.OID查詢

//根據(jù)id查詢某一條記錄,返回對(duì)象

User user = session.get(User.class,1);


3.hql查詢

//Query對(duì)象,寫(xiě)hql語(yǔ)句實(shí)現(xiàn)查詢,hql語(yǔ)句和普通sql語(yǔ)句相似,但sql操作數(shù)據(jù)庫(kù)表和字段,但hql操作實(shí)體類和屬性

(1)查詢所有

Query query = session.createQuery("from User");

List<User> list = query.list();

(2)條件查詢

hql條件查詢語(yǔ)法:(1)from 實(shí)體類名稱 where 實(shí)體類屬性 = ? and 實(shí)體類屬性 = ?

Query query = ssession.createQuery("from User where name=? and Pwd=?");

//向?設(shè)置值 setParameter(int類型 ?位置,具體參數(shù)值)位置從0開(kāi)始

query.setParameter(0,"123");

query.setParameter(1,"zhangsan");

List<User> list = query.list();

模糊查詢

Query query = session.createQuery("from User c where c.name like ?");

query.setParameter(0,"%浪%");

List<User> list = query.list();

(3)排序查詢

·語(yǔ)法:from 實(shí)體類名稱 order by 屬性名稱 asc/desc

Query query = session.createQuery("from User order by id asc");

(4)分頁(yè)查詢

注意:hql操作語(yǔ)句中不能寫(xiě)limit,hibernate的Query對(duì)象封裝了兩個(gè)方法的實(shí)現(xiàn)

Query query = session.createQuery("from User");

query.setFirstResult(0);//設(shè)置開(kāi)始位置

query.setMaxResult(3);

List<User> list = query.list();

(5)投影查詢(查詢部分字段)

select 實(shí)體類屬性名稱1,屬性名稱2 from 實(shí)體類名稱

select 后面不能寫(xiě) *,不支持

Query query? = session.createQuery("select name from User");

List<User> list = querey.list();

(6)常用聚合函數(shù):count、sum、avg、max、min

Query query = session.createQuery("select count(*) from User");

Object obj = query.uniqueResult();

Long lobj = (Long)obj;

int count = lobj.intValue();


4.QBC查詢

QBC不需要查詢語(yǔ)句,使用方法實(shí)現(xiàn),QBC操作實(shí)體類和屬性,使用Criteria對(duì)象實(shí)現(xiàn)

(1)查詢所有:Criteria criteria = session.createCriteria(User.class);

List<User> list = criteria.list();

(2)條件查詢

Criteria criteria = session.createCriteria(User.class);

criteria.add(Restrictions.eq("id",1));//類似于id=?

List<User> list = criteria.list();

(3)模糊查詢

criteria.add(Restriction.like("name","%百%"));

(4)排序查詢

設(shè)置對(duì)哪個(gè)屬性進(jìn)行排序,設(shè)置排序規(guī)則

criteria.addOrder(Order.asc("id"));

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容