HQL基本的举例

来源:互联网 发布:日落大道 知乎 编辑:程序博客网 时间:2024/06/02 07:40
java 代码
  1.   
  2. /*  
  3.  * 简单的查询一个表,返回List  
  4.  */  
  5. public void testHQL1(){   
  6.        
  7.     Session session = factory.openSession();   
  8.     String hql = "from User";   
  9.     Query query = session.createQuery(hql);   
  10.     List users = query.list();   
  11.     for(User user : users){   
  12.         System.out.println(user.getName());   
  13.         System.out.println("---------------");   
  14.     }   
  15.        
  16.     session.close();   
  17. }   
  18.   
  19.   
  20. /*  
  21.  *   
  22.  * 加了一些限制的条件查询,查询得到一个List  
  23.  * 这里跟 sql 语句很像,很好!  
  24.  */  
  25. public void testHQL2(){   
  26.        
  27.     Session session = factory.openSession();   
  28.     String hql = "from User where name='linweihan' and addr ='beijing'";   
  29.     Query query = session.createQuery(hql);   
  30.     List users = query.list();   
  31.     for(User user : users){   
  32.         System.out.println(user.getName());   
  33.         System.out.println("---------------");   
  34.     }   
  35.        
  36.     session.close();   
  37. }   
  38.   
  39. /*  
  40.  * 排序,使用order by和sql 非常像很好  
  41.  */  
  42. public void testHQL3(){   
  43.        
  44.     Session session = factory.openSession();   
  45.     String hql = "from User order by age desc";   
  46.     Query query = session.createQuery(hql);   
  47.     List users = query.list();   
  48.     for(User user : users){   
  49.         System.out.println(user.getAge());   
  50.         System.out.println(user.getName());   
  51.         System.out.println("---------------");   
  52.     }   
  53.        
  54.     session.close();   
  55. }   
  56.   
  57.   
  58. /*  
  59.  * 分组,使用group by  
  60.  */  
  61. public void testHQL4(){   
  62.        
  63.     Session session = factory.openSession();   
  64.     String hql = "from User group by addr";   
  65.     Query query = session.createQuery(hql);   
  66.     List users = query.list();   
  67.     for(User user : users){   
  68.         System.out.println(user.getAge());   
  69.         System.out.println(user.getName());   
  70.         System.out.println(user.getAddr());            
  71.         System.out.println("---------------");   
  72.     }   
  73.        
  74.     session.close();   
  75. }   
  76.   
  77.   
  78. /*  
  79.  * 使用函数  
  80.  * 这里使用avg(),平均数  
  81.  * 跟sql很像啊  
  82.  */  
  83. public void testHQL5(){   
  84.        
  85.     Session session = factory.openSession();   
  86.     String hql = "select avg(age) from User";   
  87.     //这里返回的List是float类型的   
  88.     Query query = session.createQuery(hql);   
  89.     List avg_ages = query.list();   
  90.     for(Float avg_age : avg_ages){   
  91.         System.out.println(avg_age);   
  92.     }   
  93.        
  94.     session.close();   
  95. }   
  96.   
  97.   
  98. /*  
  99.  * 分组和函数相结合  
  100.  *   
  101.  */  
  102. public void testHQL6(){   
  103.        
  104.     Session session = factory.openSession();   
  105.     String hql = "select avg(age) from User group by addr";   
  106.     //这里返回的List是float类型的   
  107.     Query query = session.createQuery(hql);   
  108.     List avg_ages = query.list();   
  109.     for(Float avg_age : avg_ages){   
  110.         System.out.println(avg_age);   
  111.     }   
  112.        
  113.     session.close();   
  114. }   
  115.   
  116.   
  117. /*  
  118.  * 分组和函数相结合,查询平均年龄和地址  
  119.  * 所以返回的类型应该是Object  
  120.  *   
  121.  */  
  122. public void testHQL7(){   
  123.        
  124.     Session session = factory.openSession();   
  125.     String hql = "select avg(age),addr from User group by addr";   
  126.     Query query = session.createQuery(hql);   
  127.     List avg_ages = query.list();   
  128.     for(Object[] avg_age : avg_ages){   
  129.         System.out.println(avg_age[1]+"----"+avg_age[0]);   
  130.     }   
  131.        
  132.     session.close();   
  133. }   
  134.   
  135.   
  136. /*  
  137.  * 支持select 这种通用的查询  
  138.  */  
  139. public void testHQL8(){   
  140.        
  141.     Session session = factory.openSession();   
  142.     String hql = "select name,age from User";   
  143.     Query query = session.createQuery(hql);   
  144.     List infos = query.list();   
  145.     for(Object[] info : infos){   
  146.         System.out.println(info[0]+"----"+info[1]);   
  147.     }   
  148.        
  149.     session.close();   
  150. }   
  151.   
  152. /*  
  153.  * 使用update  
  154.  * Hibernate3也支持update和delete  
  155.  * 在Hibernate2中不支持  
  156.  */  
  157. public void testHQL9(){   
  158.        
  159.     Session session = factory.openSession();   
  160.     String hql = "update User set age = 100 where name = 'linweihan'";   
  161.     Query query = session.createQuery(hql);   
  162.     //需要用executeUpdate方法   
  163.     query.executeUpdate();   
  164.     //需要事务的提交才能影响数据库   
  165.     session.beginTransaction().commit();   
  166.        
  167.     session.close();   
  168. }   
  169.   
  170. /*  
  171.  * 使用delete  
  172.  */  
  173. public void testHQL10(){   
  174.        
  175.     Session session = factory.openSession();   
  176.     String hql = "delete User where name = 'linweihan'";   
  177.     Query query = session.createQuery(hql);   
  178.     //需要用executeUpdate方法   
  179.     query.executeUpdate();   
  180.     //需要事务的提交才能影响数据库   
  181.     session.beginTransaction().commit();   
  182.        
  183.     session.close();   
  184. }   
  185.   
  186.   
  187. /*  
  188.  * 在JDBC支持动态的参数  
  189.  * 在hibernate中也支持  
  190.  */  
  191. public void testHQL11(){   
  192.        
  193.     Session session = factory.openSession();   
  194.     String hql = "from User where addr=? and age=?";   
  195.     Query query = session.createQuery(hql);   
  196.     query.setString(0"fujian");   
  197.     query.setInteger(122);   
  198.     List users = query.list();   
  199.     for(User user : users){   
  200.         System.out.println(user.getName());   
  201.         System.out.println("---------------");   
  202.     }   
  203.        
  204.     //session.close();   
  205. }      
  206.   
  207.   
  208. /*  
  209.  * HQL中支持这么一种的动态帮定可以起别名  
  210.  */  
  211. public void testHQL12(){   
  212.        
  213.     Session session = factory.openSession();   
  214.     String hql = "from User where addr=:address and age=:age";   
  215.     Query query = session.createQuery(hql);   
  216.     query.setString("address""fujian");   
  217.     query.setInteger("age"22);   
  218.     List users = query.list();   
  219.     for(User user : users){   
  220.         System.out.println(user.getName());   
  221.         System.out.println("---------------");   
  222.     }   
  223.        
  224.     session.close();   
  225. }      
  226.   
  227. /*  
  228.  * 另外Hibernate允许我们把 sql语句配置到文件中  
  229.  * 因为写到程序中需要编译的,而写到配置文件中是不需要编译的   
  230.  */  
原创粉丝点击