HQL (三) 条件查询

条件查询(重要)
* 可以采用拼字符串的方式传递参数
* 可以采用 ?号的方式传递参数
* 可以采用 :参数名的方式传递参数
* 如果传递多个参数,使用setParameterList来传递
* 在hql中可以使用数据库的函数,如:date_format
* 参见:SimpleConditionQueryTest.java

"like" 和 "=" 都可以通过 ": 参数名" 或者 "?" 接参数

  如下:  like :参数名  ,like ? , =:参数名 , =?



Java代码 复制代码 收藏代码
  1. package com.wlh.hibernate;   
  2.   
  3. import java.text.SimpleDateFormat;   
  4. import java.util.Iterator;   
  5. import java.util.List;   
  6.   
  7. import junit.framework.TestCase;   
  8.   
  9. import org.hibernate.Query;   
  10. import org.hibernate.Session;   
  11.   
  12. public class SimpleConditionQueryTest extends TestCase{   
  13.   
  14.     public void testQuery1() {   
  15.         Session session = null;   
  16.         try {   
  17.             session = HibernateUtils.getSession();   
  18.             session.beginTransaction();   
  19.             //可以拼字符串   
  20.   
  21.             List students=session.createQuery("select id,name from Student where name like '%1%'").list();   
  22.             for(Iterator iter=students.iterator();iter.hasNext();){   
  23.                 Object[] o=(Object[])iter.next();   
  24.                 System.out.println(o[0]+","+o[1]);   
  25.             }   
  26.             session.getTransaction().commit();   
  27.         }catch(Exception e) {   
  28.             e.printStackTrace();   
  29.             session.getTransaction().rollback();   
  30.         }finally {   
  31.             HibernateUtils.closeSession(session);   
  32.         }   
  33.     }      
  34.        
  35.     public void testQuery2() {   
  36.         Session session = null;   
  37.         try {   
  38.             session = HibernateUtils.getSession();   
  39.             session.beginTransaction();   
  40.             [b]//可以使用 ?号方式传递参数   
  41.             //参数的索引从0开始   
  42.             //传递的参数值不用单引号引起来[/b]   
  43.   
  44.              /*Query query=session.createQuery("select id,name from Student where name like ?");  
  45.              query.setParameter(0, "%1%");  
  46.              List students=query.list();*/  
  47.                
  48.             List students=session.createQuery("select id,name from Student where name like ? ").setParameter(0"%1%").list();   
  49.             for(Iterator iter=students.iterator();iter.hasNext();){   
  50.                 Object[] o=(Object[])iter.next();   
  51.                 System.out.println(o[0]+","+o[1]);   
  52.             }   
  53.             session.getTransaction().commit();   
  54.         }catch(Exception e) {   
  55.             e.printStackTrace();   
  56.             session.getTransaction().rollback();   
  57.         }finally {   
  58.             HibernateUtils.closeSession(session);   
  59.         }   
  60.     }      
  61.        
  62.     public void testQuery3() {   
  63.         Session session = null;   
  64.         try {   
  65.             session = HibernateUtils.getSession();   
  66.             session.beginTransaction();   
  67.             [b]//like :参数名[/b]     
  68.          Query query=session.createQuery("select id,name from Student where name like :myname");   
  69.              query.setParameter("myname""%1%");   
  70.              List students=query.list();   
  71.             for(Iterator iter=students.iterator();iter.hasNext();){   
  72.                 Object[] o=(Object[])iter.next();   
  73.                 System.out.println(o[0]+","+o[1]);   
  74.             }   
  75.             session.getTransaction().commit();   
  76.         }catch(Exception e) {   
  77.             e.printStackTrace();   
  78.             session.getTransaction().rollback();   
  79.         }finally {   
  80.             HibernateUtils.closeSession(session);   
  81.         }   
  82.     }      
  83.        
  84.     public void testQuery4() {   
  85.         Session session = null;   
  86.         try {   
  87.             session = HibernateUtils.getSession();   
  88.             session.beginTransaction();   
  89.             [color=red]//=?[/color]    
  90.   
  91.     Query query=session.createQuery("select id,name from Student where  id=?");   
  92.             query.setParameter(0,10);   
  93.              List students=query.list();   
  94.             for(Iterator iter=students.iterator();iter.hasNext();){   
  95.                 Object[] o=(Object[])iter.next();   
  96.                 System.out.println(o[0]+","+o[1]);   
  97.             }   
  98.             session.getTransaction().commit();   
  99.         }catch(Exception e) {   
  100.             e.printStackTrace();   
  101.             session.getTransaction().rollback();   
  102.         }finally {   
  103.             HibernateUtils.closeSession(session);   
  104.         }   
  105.     }      
  106.     public void testQuery5() {   
  107.         Session session = null;   
  108.         try {   
  109.             session = HibernateUtils.getSession();   
  110.             session.beginTransaction();   
  111.             [b][color=red]//=:参数名[/color][/b]      
  112.   
  113.         Query query=session.createQuery("select id,name from Student where  id=:myid");   
  114.             query.setParameter("myid",10);   
  115.              List students=query.list();   
  116.             for(Iterator iter=students.iterator();iter.hasNext();){   
  117.                 Object[] o=(Object[])iter.next();   
  118.                 System.out.println(o[0]+","+o[1]);   
  119.             }   
  120.             session.getTransaction().commit();   
  121.         }catch(Exception e) {   
  122.             e.printStackTrace();   
  123.             session.getTransaction().rollback();   
  124.         }finally {   
  125.             HibernateUtils.closeSession(session);   
  126.         }   
  127.     }      
  128.     public void testQuery6() {   
  129.         Session session = null;   
  130.         try {   
  131.             session = HibernateUtils.getSession();   
  132.             session.beginTransaction();   
  133.             [b]// like :参数名      
  134.             // = :参数名   [/b]   
  135.   
  136.              Query query=session.createQuery("select id,name from Student where name like :myname and id =:myid");   
  137.              query.setParameter("myname""%1%");   
  138.              query.setParameter("myid"11);   
  139.              List students=query.list();   
  140.             for(Iterator iter=students.iterator();iter.hasNext();){   
  141.                 Object[] o=(Object[])iter.next();   
  142.                 System.out.println(o[0]+","+o[1]);   
  143.             }   
  144.             session.getTransaction().commit();   
  145.         }catch(Exception e) {   
  146.             e.printStackTrace();   
  147.             session.getTransaction().rollback();   
  148.         }finally {   
  149.             HibernateUtils.closeSession(session);   
  150.         }   
  151.     }      
  152.     public void testQuery7() {   
  153.         Session session = null;   
  154.         try {   
  155.             session = HibernateUtils.getSession();   
  156.             session.beginTransaction();   
  157.     [b][color=red]//支持in,需要使用setPramaterList进行参数传递   
  158.                      //传入的参数必须是对象数组[/color][/b]   
  159.   
  160.              Query query=session.createQuery("select id,name from Student where id in(:myids)");   
  161.               query.setParameterList("myids"new Object[]{1,2,3,4,5});   
  162.              List students=query.list();   
  163.             for(Iterator iter=students.iterator();iter.hasNext();){   
  164.                 Object[] o=(Object[])iter.next();   
  165.                 System.out.println(o[0]+","+o[1]);   
  166.             }   
  167.             session.getTransaction().commit();   
  168.         }catch(Exception e) {   
  169.             e.printStackTrace();   
  170.             session.getTransaction().rollback();   
  171.         }finally {   
  172.             HibernateUtils.closeSession(session);   
  173.         }   
  174.     }      
  175.        
  176.        
  177.     public void testQuery8() {   
  178.         Session session = null;   
  179.         try {   
  180.             session = HibernateUtils.getSession();   
  181.             session.beginTransaction();   
  182.             [b]//查询2007年2月创建的学生(模糊查询)[/b]   
  183.   
  184.                
  185.             /*Query query=session.createQuery("select id,name from Student where date_format(createTime,'%Y-%m')=?");  
  186.               query.setParameter(0, "2007-02");*/  
  187.             Query query=session.createQuery("select id,name from Student where substring(createTime,1,7)=?");   
  188.             query.setParameter(0"2007-02");   
  189.              List students=query.list();   
  190.             for(Iterator iter=students.iterator();iter.hasNext();){   
  191.                 Object[] o=(Object[])iter.next();   
  192.                 System.out.println(o[0]+","+o[1]);   
  193.             }   
  194.             session.getTransaction().commit();   
  195.         }catch(Exception e) {   
  196.             e.printStackTrace();   
  197.             session.getTransaction().rollback();   
  198.         }finally {   
  199.             HibernateUtils.closeSession(session);   
  200.         }   
  201.     }      
  202.        
  203.        
  204.        
  205.     public void testQuery9() {   
  206.         Session session = null;   
  207.         try {   
  208.             session = HibernateUtils.getSession();   
  209.             session.beginTransaction();   
  210.             [b]//找出某个(时间段)入学的学生   
  211.             ////查询2007-01-01到2007-01-20创建的学生[/b]   
  212.   
  213.             SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");   
  214.             Query query=session.createQuery("select id,name from Student where createTime between ? and ? order by id");   
  215.             query.setParameter(0, sdf.parse( "2007-01-10 00:00:00"));   
  216.             query.setParameter(1, sdf.parse( "2007-01-20 23:59:59"));   
  217.              List students=query.list();   
  218.             for(Iterator iter=students.iterator();iter.hasNext();){   
  219.                 Object[] o=(Object[])iter.next();   
  220.                 System.out.println(o[0]+","+o[1]);   
  221.             }   
  222.             session.getTransaction().commit();   
  223.         }catch(Exception e) {   
  224.             e.printStackTrace();   
  225.             session.getTransaction().rollback();   
  226.         }finally {   
  227.             HibernateUtils.closeSession(session);   
  228.         }   
  229.     }      
  230.        
  231. }  
posted @ 2011-11-22 10:51  java学弟  阅读(2537)  评论(0编辑  收藏  举报