`

[转]HQL基本的举例

阅读更多
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<user></user> 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<user></user> 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<user></user> 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<user></user> 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<float></float> 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<float></float> 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<user></user> 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<user></user> 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.  */  
分享到:
评论

相关推荐

    annotaion-hibernate

    4. **持久化方法注解**:`@Transient` 忽略不映射的字段,`@Basic` 基本属性映射,`@Lob` 大对象处理,`@GeneratedValue` 自动生成值。 5. **缓存注解**:`@Cacheable`, `@Cache` 用于启用和配置二级缓存。 6. **...

    HibernateTemplate及generator用法.docx

    - Query的用法:除了基本的查询外,Query还支持更新、删除操作,并能进行分页。例如,使用`createQuery()`创建HQL(Hibernate查询语言)语句,通过设置参数、执行更新或删除操作,以及进行分页查询。 2. **...

    举例详解用Java实现web分页功能的方法

    首先,理解Web分页的基本原理。当查询到的数据量过大时,一次性加载所有数据到前端显示并不现实,因此采用分页方式,只加载一部分数据进行显示。由于HTTP协议的无状态性,每次请求都是独立的,所以在分页过程中,...

    Hadoop和HIVE面试题

    接下来是Hive,它是建立在Hadoop之上的数据仓库工具,允许用户使用SQL(称为HQL)对大数据进行查询和分析。Hive将SQL语句转换为MapReduce任务,简化了对Hadoop集群的数据操作。Hive有以下核心概念: 1. 表和分区:...

    java SSH面试题

    2. 举例说明Spring的依赖注入如何实现。 3. 解释Hibernate的O/R Mapping原理。 4. 分析Struts的执行流程和主要组件的作用。 5. 如何在Spring中配置和使用Hibernate。 6. 解释AOP在实际开发中的应用场景。 7. 讨论SSH...

    Java面试资料(最全面的java面试题库SSH)

    - 类与对象:理解面向对象的基本概念,如封装、继承和多态。 - 内存管理:垃圾回收机制,理解堆和栈的区别。 - 集合框架:List、Set、Map接口及其实现类的使用场景与特性。 - 多线程:线程的创建方式,同步机制...

    ARCH4系统开发指南

    2.2 如何执行HQL查询 11 2.3 如何执行SQL查询 12 2.4 如何使用Mail 12 2.4.1 确保资源文件正确 12 2.4.1.1 确认mail.properties文件设置正确 12 2.4.1.2 确认applicationContext-mail.xml文件设置正确 12 2.4.1.3 ...

    Hibernate基础教程

    #### 映射文件的基本结构举例 - `&lt;hibernate-mapping&gt;`标签:定义映射文件的根节点。 - `&lt;class&gt;`标签:用于映射Java实体类。 - `&lt;id&gt;`标签:定义主键字段的映射规则。 - `&lt;property&gt;`标签:映射类中的属性到数据库...

    Hibernate学习

    - **映射文件的基本结构举例**: - 映射文件通常采用XML格式,包含多个元素,如`&lt;hibernate-mapping&gt;`、`&lt;class&gt;`、`&lt;id&gt;`、`&lt;property&gt;`等。 - **标签**: - 该标签是根元素,定义了所有类的映射信息。 - **标签*...

    java最新面试宝典

    - Criteria API与HQL(Hibernate Query Language)的区别。 - 一级缓存与二级缓存的管理。 - **面试考察要点:** - Hibernate与其他持久层框架的对比。 - 如何利用Hibernate简化数据库操作。 **补充☆9.6 ...

    初识Hadoop.docx

    - **量级举例**:如文中所举的例子,YouTube用户在一分钟内上传的新视频就有300小时,电子邮件用户发送的信息高达2.4亿条,Google收到的搜索查询超过278万次等。这些数据的增长趋势表明,大数据的定义是随着技术...

    Hibernate实现下拉示分页

    为了实现分页,我们需要使用到Hibernate的Criteria查询或HQL(Hibernate Query Language)。这里我们用Criteria API举例: ```java public List&lt;Student&gt; findByPage(int page, int pageSize) { Session session =...

Global site tag (gtag.js) - Google Analytics