來(lái)自:徽駱駝
Criteria Query
可以看作傳統(tǒng)sql的對(duì)象化表示
Criteria 可以由session創(chuàng)建
Criteria ct= session.createCriteria(TUser.class);
Criteria中可以增加查詢條件
ct.add(Expression.eq("name","Erica"));
ct.add(Expression.eq("sex",new Integer(1)));
Criteria中增加的查詢條件可以由表達(dá)式對(duì)象創(chuàng)建
Expression.eq(對(duì)象屬性名,對(duì)象屬性值);
查詢條件通過(guò)Criteria的add方法加入。
表達(dá)式對(duì)象的方法有:
eq 等于,第一個(gè)參數(shù)是對(duì)象屬性,第二個(gè)參數(shù)是值
allEq 參數(shù)為一個(gè)Map對(duì)象,相當(dāng)于多個(gè)eq的疊加
gt 大于
ge 大于等于
lt <
le <=
between 在兩個(gè)值之間Expression.between("age",new Integer(10),new Integer(20));
like like查詢
in in查詢
eqProperty 用于比較兩個(gè)對(duì)象的屬性的值是否相等
gtProperty
geProperty
ltProperty
leProperty
and and方法可以嵌套Expression對(duì)象,用于and關(guān)系
or 同上
如:Expression.or(
Expression.eq("name","hulei"),
Expression.eq("name","jane")
);
sql 作為Expression對(duì)象的補(bǔ)充,本方法提供對(duì)原生sql的支持
***注意,在Hibernate3中,引入了Restrictions類作為Expression的替代,以后的版本,不再推薦使用Expression。
***但是,Restrictions類的使用方法和Expression的方法一致。
注意,在查詢條件中,Hibernate提供了一個(gè)Example查詢,當(dāng)查詢條件比較多的時(shí)候,
可以用Example查詢來(lái)簡(jiǎn)化代碼,使用方法如下:
TUser user=new TUser();
user.setLoginName("hulei");
user.setPassword("hulei");
Criteria ct=session.createCriteria(TUser.class);
ct.add(Example.create(user));
return ct.list();
復(fù)合查詢
Criteria查詢可以嵌套Criteria來(lái)實(shí)現(xiàn)復(fù)合查詢
如下:
Criteria ct=session.createCriteria(TUser.class);
Criteria ctAddress=ct.createCriteria("addresses");//這里是嵌套了一個(gè)Criteria查詢,這里的addresses是TUser的屬性
ctAddress.add(Expression.like("address","%shanghai%"));
List list=ct.list();