动态查询就是查询条件不确定的查询,或者说查询条件是根据用户传入的某些参数来生成的,在查询之前就已经生成了查询条件,hibernate中的查询条件一般都需要在取得session后才构造,而hibernate动态查询在取得session之前就已经构造好了查询条件,只是将查询条件作为参数传入到查询方法中,因此也叫离线查询,动态查询的条件可以在web层中就已经构造好了,例如servlet中,构造查询条件的方式如下:
DetachedCriteria dc=DetachedCriteria.forClass(User.class);
String name=request.getParameter("name");//接收参数
dc.add(Restrictions.eq("name",name));//此为约束条件,等于是用eq,还可以根据需要设置成大于小于等等
List users=dc(dc);//调用实现方法
实现查询方法如下:
public List dc(DetachedCriteria dc){
Session s=HibernateUtil.getSession();//取得session
Criteria c=dc.getExecutableCriteria(s);
List list=c.list();
s.close();
return list;
}
上面的方法就可以完成动态条件查询
DetachedCriteria dc=DetachedCriteria.forClass(User.class);
String name=request.getParameter("name");//接收参数
dc.add(Restrictions.eq("name",name));//此为约束条件,等于是用eq,还可以根据需要设置成大于小于等等
List users=dc(dc);//调用实现方法
实现查询方法如下:
public List dc(DetachedCriteria dc){
Session s=HibernateUtil.getSession();//取得session
Criteria c=dc.getExecutableCriteria(s);
List list=c.list();
s.close();
return list;
}
上面的方法就可以完成动态条件查询