`

HQL查询语句基础

 
阅读更多

      Session session = HibernateSessionFactory.getSession();
      session.beginTransaction();
      ① HQL语言的使用
          Query query = session.createQuery(" from User as user where user.id = ?");
      ② Query接口的set...方法
          query.setInteger(0, 1);
      ③ Query接口的List方法
          List<User> list = query.list();
      ④ 遍历结果集
          Iterator<User> i = list.iterator();
          while(i.hasNext()){
              User user = i.next();
              System.out.println(user.getId()+" : "+user.getName());
         }
          session.getTransaction().commit();
          session.close();
1.HQL 语言与Query接口的使用
    HQL:Hibernate Query Language  
    HQL是完全面向对象的查询语言,因此可以支持继承和多态等特征。  
    HQL查询依赖于Query类,每个Query实例对应一个查询对象,使用HQL查询按  
     如下步骤进行:  
    (1)获取Hibernate Session对象;  
    (2)编写HQL语句;  
    (3)以HQL语句作为参数,调用Session的createQuery方法创建查询对象;  
    (4)如果HQL语句包含参数,调用Query的setXxx方法为参数赋值;  
    (5)调用Query对象的list等方法遍历查询结果。  
2.命名查询
   把查询条件放置在程序之外,避免硬编码; 在*.hbm.xml中使用<query>标签, 在<![CDATE[ code]]> 中写HQL语句
        <hibernate-mapping>
        <class name="po.User" table="user" catalog="mytest">
            <id name="id" type="java.lang.Integer">
                <column name="id" />
                <generator class="uuid.hex" />
            </id>
            <property name="name" type="java.lang.String">
                <column name="name" length="256" />
            </property>
            <property name="age" type="java.lang.Integer">
                <column name="age" />
            </property>
        </class>
           <query name="idNameQuery">
            <![CDATA[ 
             from User as user where user.id = ?
             ]]>
           </query>
    </hibernate-mapping> 
使用getNamedQuery()方法根据query的名字属性获取hql语句,以获取Query对象。
      Session session = HibernateSessionFactory.getSession();
      session.beginTransaction();
      List<User> list = session.getNamedQuery("idNameQuery").setInteger(0, 1).list();
      
      Iterator<User> i = list.iterator();
      while(i.hasNext()){
       User user = i.next();
       System.out.println(user.getId()+" : "+user.getName());
      }
      session.getTransaction().commit();
      session.close();
3. HQL的参数的绑定方式
      Hibernate中对动态查询参数绑定提供了丰富的支持,在Hibernate中共存在4种参数绑定的方式,下面只介绍两种:
  A、 按参数名称绑定:
   在HQL语句中定义命名参数要用”:”开头,形式如下:
   Query query=session.createQuery(“from User user where user.name= :customername and user.age = :customerage”);
      query.setString(“customername”,name);
      query.setInteger(“customerage”,age);
  上面代码中用:customername和:customerage分别定义了命名参数customername和customerage,然后用Query接口的setXXX()方法设定名参数值,setXXX()方法包含两个参数,分别是命名参数名称和命名参数实际值。
B、 按参数位置邦定:
    在HQL查询语句中用”?”来定义参数位置,形式如下:
   Query query=session.createQuery(“from User user where user.name= ? and user.age = ? ”);
      query.setString(0,name);
      query.setInteger(1,age);
 同样使用setXXX()方法设定绑定参数,只不过这时setXXX()方法的第一个参数代表邦定参数在HQL语句中出现的位置编号(由0开始编号),第二个参数仍然代表参数实际值。
    注:在实际开发中,提倡使用按名称邦定命名参数,因为这不但可以提供非常好的程序可读性,而且也提高了程序的易维护性,因为当查询参数的位置发生改变时,按名称邦定名参数的方式中是不需要调整程序代码的。

分享到:
评论

相关推荐

    hql基础语句

    整理的hql语句 id生成策略 集合传参,传参方式等 应有尽有

    HQL语句的语法

    HQL语句的语法,很基础

    hql语句查询

    一些基础的hql语写法

    Hibernate HQL基础练习小列子+数据库文件

    Hibernate HQL基础练习小列子+数据库

    hibernate -HQL

    hql基础语句和输出方式

    Hibernate HQL基础 限定查询条件 .doc

    基本上包含了HQL常用的所有类型的语句了

    NHibernate查询语言(HQL)文档.

    NHibernate 查询语言(HQL,NHibernate QueryLanguage)是NHibernate 特有的基于面向对象 的SQL 查询语言,它具有继承、多态和关联等特性。实际上是用OOP 中的对象和属性映射 了数据库中的表和列。 例如这一句:...

    Hibernate HQL教程

    1.2.4 在映射文件配置HQL语句 15 1.3 HQL的嵌套子查询 15 1.3.1 嵌套子查询的概念 15 1.3.2 带有IN谓词的子查询 16 1.3.3 比较子查询 16 1.3.4 带有ANY或ALL的子查询 17 1.4 HQL的多表查询 17 1.4.1 表之间的关联...

    Java数据库技术详解 DOC简版

    第12章 HQL查询语言 第13章 Hibernate的高级特性 第14章 Hibernate结合JSP使用 第四篇 iBatis篇 第15章 iBatis概述 第16章 iBatis的特性 第17章 JSP、Servlet和iBatis结合使用 第五篇 XML篇 第18章 ...

    hibernate语句大全

    这是对于初学hibernate的人来说是一种很好的基础语句,一看就可以明白

    2023Java高频面试题

    Hibernate框架:Hibernate框架的基础概念、ORM映射、HQL查询等。 Servlet与JSP:Web开发的基础知识、Servlet和JSP的基础概念、生命周期、内置对象等。 设计模式:单例模式、工厂模式、代理模式等常见的设计模式。 ...

    Hive用户指南(Hive_user_guide)_中文版.pdf

    HQL 中对查询语句的解释、优化、生成查询计划是由 Hive 完成的 所有的数据都是存储在 Hadoop 中 查询计划被转化为 MapReduce 任务,在 Hadoop 中执行(有些查询没有 MR 任 务,如: select * from table ) ...

    基于Hadoop的数据仓库Hive基础知识

    Hive是基于Hadoop的数据仓库工具,可对存储在HDFS上的文件中的数据集进行数据整理、特殊查询和分析处理,提供了类似于SQL语言的查询语言–HiveQL,可通过HQL语句实现简单的MR统计,Hive将HQL语句转换成MR任务进行...

    Hibernate基础配置导入的最小JAR包

    antlr-2.7.6.jar-代码扫描器,用来翻译HQL语句 commons-collections-3.1.jar-功能比java.util.*强大 dom4j-1.6.1.jar-类似于jdom,用来读写XML文件的 javassist-3.4.GA.jar- Javassist 字节码解释器 jta-1.1.jar-标准...

    apache-hive-2.3.5-bin.tar.gz

    Hive 定义了简单的类 SQL 查询语言,称为 HQL,它允许熟悉 SQL 的用户查询数据。同时,这个语言也允许熟悉 MapReduce 开发者的开发自定义的 mapper 和 reducer 来处理内建的 mapper 和 reducer 无法完成的复杂的分析...

    Java语言基础下载

    第四章: Java语法基础 47 学习目标 47 基本语法元素 48 Java关键字 49 基本Java数据类型 50 变量声明和赋值 52 引用(Reference)类型 52 存储器分配和布局 53 this引用 55 Java编码约定 56 运算符的优先级 58 升级...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part4

     17.1.12 在HQL查询语句中绑定参数  17.1.13 设置查询附属事项  17.1.14 在映射文件中定义命名查询语句  17.1.15 在HQL查询语句中调用函数  17.2 设定查询条件  17.2.1 比较运算  17.2.2 范围运算  17.2.3 ...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part2

     17.1.12 在HQL查询语句中绑定参数  17.1.13 设置查询附属事项  17.1.14 在映射文件中定义命名查询语句  17.1.15 在HQL查询语句中调用函数  17.2 设定查询条件  17.2.1 比较运算  17.2.2 范围运算  17.2.3 ...

Global site tag (gtag.js) - Google Analytics