`

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 查询语言基础知识 HQL(Hibernate Query Language)是一种面向对象的查询语言,用于在 Hibernate 框架中查询数据库。HQL 查询语言基础知识是 Hibernate 中的基础组件之一,对于开发人员来说,掌握 HQL 查询语言...

    hql基础语句

    HQL(Hibernate Query Language)是Hibernate框架中用于...以上内容涵盖了HQL的基础用法,包括ID生成策略、基本查询语句、集合参数传递和不同的传参方式。通过这些知识点,你可以更有效地使用Hibernate进行数据库操作。

    超级详细的hql查询语句教程

    可以通过映射文件预先定义HQL语句,便于复用: ```xml SELECT s FROM Student s WHERE s.sname = :name ``` #### 四、HQL的嵌套子查询 ##### 4.1 嵌套子查询的概念 嵌套子查询是指在主查询中包含另一个查询的...

    全面解析HQL语句 非常详细直接的HQL语句的功能介绍

    `from`子句是HQL语句的基础,用于指定查询的数据源。例如,`from Person as p`表示查询的目标是从`Person`实体类中选择所有实例。此子句支持简单的全表扫描,也能够进行更复杂的多表联接查询。 ### 2. select子句 ...

    HQL查询语言基础.

    **HQL查询语言基础** HQL(Hibernate Query Language)是Hibernate框架中用于操作对象关系映射(ORM)的查询语言,它与SQL类似,但专为面向对象编程设计。HQL允许开发者以类和对象的方式编写查询,而不是直接处理...

    HQL查询及语法

    2. **编写HQL语句**:根据需求构建HQL查询语句,这一步骤需要熟悉HQL语法结构。 3. **创建Query对象**:利用Session对象的`createQuery`方法,传入HQL语句创建Query实例。 4. **设置参数**:如果HQL语句中包含...

    HQL 查询语言基础 二

    ### HQL 查询语言基础二 #### 一、FROM 子句 在HQL查询语言中,`FROM`子句用于指定查询数据来源的实体或表。例如: ```hql FROM Person as p ``` 这里的`Person`表示的是一个持久化类,即ORM映射中的实体类。`as...

    hql精点查询语句.doc

    这一步骤对于构建任何HQL查询都是基础性的,因为它定义了查询的数据范围。 ### 2. SELECT子句 SELECT子句用于选择查询结果中包含的字段或属性。HQL支持多种选择方式: - `select p.name from Person as p`:选择...

    HQL查询语言基础

    **HQL查询语言基础** HQL(Hibernate Query Language)是Hibernate框架中用于操作对象关系映射(ORM)的查询语言,它与SQL类似但更面向对象。HQL提供了丰富的功能来查询和操作数据库中的对象,使得开发人员可以更加...

    hibernate 中HQL语句查询学习笔记

    ### Hibernate中HQL语句查询学习笔记 #### HQL基础 **HQL**(Hibernate Query Language)是Hibernate框架推荐使用的查询语言,它提供了一种面向对象的方式来查询数据库,支持多种复杂的查询操作,如继承、多态及...

    HQL查询语言基础!

    **HQL查询语言基础** HQL(Hibernate Query Language)是Hibernate框架中用于操作对象关系映射(ORM)的查询语言,它与SQL类似,但更专注于面向对象的查询。HQL允许开发者以类和对象的方式来编写查询,而不是直接...

    HQL查询语言基础知识 + 插入,查询,更新, 代码集

    - 安全性:通过预编译的HQL语句可以防止SQL注入攻击。 9. **HQL与SQL的区别** - HQL是面向对象的,而SQL是面向表的。 - HQL支持对象关系映射,SQL直接操作表和列。 - HQL支持连接查询,可以直接查询关联的对象...

    学习HQL语句

    HQL查询语言基础知识 HQL(Hibernate Query Language)是一种面向对象的查询语言,建立在面向对象的基础上。它提供了类SQL查询的功能,但查询目标是对象,而不是记录。HQL 拥有面向对象语言的所有特性,包括多态、...

    hql语句查询

    基础查询 - **查询所有列**: ```hql SELECT obj FROM TableName obj; ``` - **查询指定列**: ```hql SELECT obj.column1, obj.column2 FROM TableName obj; ``` ##### 2. 条件查询 - **WHERE条件查询**: ...

    hql语句 使用大全

    当需要同时查询多个字段时,可以在HQL语句中指定这些字段,并通过索引来访问这些字段值: ```java String hql = "select u.name, u.age from com.mypack.User4 u"; Query query = session.createQuery(hql); List ...

    hql多表查询

    ### HQL多表查询的基础概念 HQL支持多种查询方式,包括单表查询、多表查询、连接查询等。其中,多表查询是处理复杂数据关系的关键技术,它允许开发者在一个查询语句中同时操作多个表,从而提高数据处理的效率和查询...

    Spring中常用的hql查询方法

    该方法支持通过参数化的方式执行查询,即可以向HQL语句中添加单个参数值。这对于简单的条件查询非常有用。 **示例代码**: ```java List&lt;User&gt; userList = this.getHibernateTemplate().find("from bean.User u ...

    hibernate所用到HQL经典语句大全

    HQL(Hibernate Query Language)是一种面向对象的查询语言,它允许开发者使用类及其属性来编写查询语句,而不是传统的SQL语句。这使得开发人员可以更加专注于业务逻辑而非底层数据库的细节。 **1.1 基本查询** - *...

    hibernate hql各类查询范例

    以上内容涉及了使用 HQL 和 DetachedCriteria 进行查询、参数化查询、执行更新操作以及简单的统计查询等常见的 Hibernate 操作。这些知识点对于理解和掌握 Hibernate 框架的基本使用至关重要,同时也是开发基于 ...

    HQL经典语句

    HQL支持标准的SQL查询语法,并在此基础上提供了面向对象的查询方式,使得查询操作更加灵活和强大。 #### 1. HQL基本查询 - **通过Iterator遍历已加载的集合** 使用`iterator()`方法遍历已加载的数据集,如`order...

Global site tag (gtag.js) - Google Analytics