Criteria查询,DetachedCriteria离线查询 --做综合查询

来源:互联网 发布:林志颖淘宝店 编辑:程序博客网 时间:2024/05/16 18:21

 通过Session得到Criteria类的对象

Java代码  收藏代码
  1. /**   
  2.  * 用Criteria方便的综合查询 Criteria类有丰富的比较方法   
  3.  *    
  4.  * 如:大于,小于,等于, not null, in,null, like, isEmpty....   
  5.  */    
  6. public static void select()     
  7. {     
  8.     Session s = null;     
  9.     try    
  10.     {     
  11.         s = HibernateUtil.getSeesion();     
  12.     
  13.         //得到Criteria对象     
  14.         final Criteria c = s.createCriteria(User.class);     
  15.     
  16.         //添加查询条件 ,eq()表示等于,第一个参数是User类上的属性名, 第二个参数是值 .     
  17.         c.add(Restrictions.eq("name""zl"));     
  18.         c.add(Restrictions.lt("birthday"new Date())); //lt()表示小于     
  19.     
  20.         //下面两个条件是 或的关系,可以注意观察输出的SQL语句     
  21.         c.add(Restrictions.or(Restrictions.eq("name""wj"), Restrictions.eq("name""name0")));     
  22.         // 分页     
  23.         c.setFetchSize(10); //从第10条记录起     
  24.         c.setMaxResults(10); //查出10条记录     
  25.     
  26.         //执行查询     
  27.         final List<User> list = c.list();     
  28.         for (final User u : list)     
  29.         {     
  30.             System.out.println(u.getId() + " " + u.getName());     
  31.         }     
  32.     }     
  33.     finally    
  34.     {     
  35.         s.clear();     
  36.     }     
  37. }    

 

  伦理片 http://www.dotdy.com/

DetachedCriteria 在构造时不须要Session对象,可以在没有Session时完成拼接查询条件,要执行时才须要Session对象

Java代码  收藏代码
  1. //在Action中 拼查询条件  
  2.     public ActionForward Action (....)  
  3.     {   
  4.          DetachedCriteria dc = DetachedCriteria.forClass(User.class);  
  5.          String name = request.getParameter("name");  
  6.           
  7.         //拼查询条件  
  8.          if (name != null)  
  9.             dc.add(Restrictions.eq("name", name));  
  10.          int age = request.getParameter("age");  
  11.          if(age > 0)  
  12.              dc.add(Restrictions.eq("age", age));  
  13.          List users = query(dc);  
  14.     }  

 

Java代码  收藏代码
  1. //在DAO层 查询  
  2.      static List query(DetachedCriteria dc)   
  3.      {  
  4.         Session s = HibernateUtil.getSession();  
  5.         Criteria c = dc.getExecutableCriteria(s);  //这时须要一个session  
  6.         List rs = c.list();  
  7.         s.close();  
  8.         return rs;  
  9.     }  

 


0 0