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"));