日期:2014-05-18  浏览次数:20816 次

hibernate不定条件查询?怎么写?
网上看到一种是拼接sql,还有一种是完全面向对象的用Criteria实现多条件查询,
Criteria这种方法怎么用啊?谁给讲解下或者给个讲的详细的链接
sql hibernate 面向对象

------解决方案--------------------
了解Criteria查询
了解使用Criteria查询进行排序
了解使用Criteria查询进行分页
?Criteria查询依赖特定的数据库
?Criteria查询技术主要是为了方便不会写sql的人进行开发
?Criteria查询采用的也是面向对象的方式封装查询条件,又称为对象查询
?Criteria对查询语句进行了封装
?会由Hibernate自动产生SQL查询语句
?Criteria由Hibernate Session进行创建
public void findAll(){
Criteria c = session.createCriteria(Person.class);//创建Criteria对象
c.add(Restrictions.eq("PNm", "张三"));//加入查询条件
List<Person> list = c.list();
Iterator<Person> it = list.iterator();
while(it.hasNext()){
Person p = it.next();
System.out.println(p.getPNm()+"====="+p.getPDept()+"======"+p.getPSalary());
}
}


排序:
public void findAll(){
Criteria c = session.createCriteria(Person.class);//创建Criteria对象
c.add(Restrictions.or(Restrictions.eq("PNm", "张三"),Restrictions.gt("PSalary", 5000.0)));//加入查询条件
c.addOrder(Order.desc("PSalary"));
List<Person> list = c.list();
Iterator<Person> it = list.iterator();
while(it.hasNext()){
Person p = it.next();
System.out.println(p.getPNm()+"====="+p.getPDept()+"======"+p.getPSalary());
}
}
分页:
public void findAll(){
Criteria c = session.createCriteria(Person.class);//创建Criteria对象
c.add(Restrictions.or(Restrictions.eq("PNm", "张三"),Restrictions.gt("PSalary", 5000.0)));//加入查询条件
c.addOrder(Order.desc("PSalary"));
c.setFirstResult(0);
c.setMaxResults(2);
List<Person> list = c.list();
Iterator<Person> it = list.iterator();
while(it.hasNext()){
Person p = it.next();
System.out.println(p.getPNm()+"====="+p.getPDept()+"======"+p.getPSalary());
}
}