詳細內容 http://blog.csdn.net/linshutao/article/details/5486628
public void testCriteria() {
Session session = null;
Transaction tx = null;
try {
session = HibernateUtils.getSession();
tx = session.beginTransaction();
//使用Criteria API進行查詢
Criteria crit = session.createCriteria(Student.class);
//查詢名字不等於小桂的學生
// crit.add(Restrictions.ne("name", "小桂"));
//查詢名字爲校規的學生
// crit.add(Restrictions.eq("name", "校規"));
//查詢名字由余開頭的學生
// crit.add(Restrictions.like("name", "餘%"));
//查詢id<2的學生
// crit.add(Restrictions.lt("id", new Integer(2)));
//查詢id>2的學生
//crit.add(Restrictions.gt("id", new Integer(2)));
//查詢id>2並且(and)名稱以規結尾的學生,注意:添加多個限制時,解釋爲and關係
//hibernate發錯的sql語句爲:
//Hibernate: select this_.id as id1_0_, this_.name as name1_0_, this_.createTime
//as createTime1_0_, this_.classid as classid1_0_ from Student this_ where this_.id>? and this_.name like ?
/*crit.add(Restrictions.gt("id", new Integer(2)));
* crit.add(Restrictions.like("name", "%規"));
* */
//如果只是想滿足兩個條件中某一個條件(or),就需要使用Restrictions類上的or()方法,如下所示:
//Criterion定義一個條件項
/* Criterion id = Restrictions.gt("id", new Integer(2));
Criterion name = Restrictions.like("name", "%規");
LogicalExpression orExp = Restrictions.or(id, name);
crit.add(orExp);*/
/* 如果要創建多於兩個的or表達式,則可以使用org.hibernate.criterion.Disjuncion對象來表示析取(disjunction)
從Restrictions類上的disjunction()工廠方法獲得這個對象。
要創建多於2個的AND表達式,可以使用conjunction()方法(合取)*/
Criterion name = Restrictions.like("name", "%規");
Criterion name1 = Restrictions.like("name", "%成");
Criterion name2 = Restrictions.like("name", "餘%");
Disjunction disjunction = Restrictions.disjunction();
disjunction.add(name);
disjunction.add(name1);
disjunction.add(name2);
crit.add(disjunction);
List results = crit.list();
Iterator iter = results.iterator();
while(iter.hasNext()){
Student s = (Student)iter.next();
System.out.println(s.getName());
}
tx.commit();
} catch (HibernateException e) {
e.printStackTrace();
if (tx != null)
tx.rollback();
} finally {
HibernateUtils.closeSession(session);
}
}
public void testCriteria2() {
Session session = null;
Transaction tx = null;
try {
session = HibernateUtils.getSession();
tx = session.beginTransaction();
Criteria crit = session.createCriteria(Student.class);
//創建一個別名
Criteria classCriteria = crit.createAlias("classes", "c");
crit.setProjection(Property.forName("name"));
Criterion name = Restrictions.like("c.name", "714");
crit.add(name);
List results = crit.list();
Iterator iter = results.iterator();
while(iter.hasNext()){
System.out.println(iter.next());
}
/* while(iter.hasNext()){
Student s = (Student)iter.next();
System.out.println(s.getName());
}*/
tx.commit();
} catch (HibernateException e) {
e.printStackTrace();
if (tx != null)
tx.rollback();
} finally {
HibernateUtils.closeSession(session);
}
}
}