详细内容 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);
}
}
}