HQL数据查询

转载 2016年08月31日 17:49:19

HQL定义:Hibernate Query Language。是Hibernate框架提供的一种查询语言。HQL是面向对象的查询语言,其查询的主体是映射配置的持久化类及其属性。(:SQL不是面向对象的查询语言,其主体是数据库表及表的字段)
实际上,hibernate框架会将编写好的HQL语句解析成相应的sql语句来完成最终的数据库查询操作。
HQL查询丰富灵活,是hibernate官方推荐的查询方式。


HQL语句形式:

  • select:指定查询结果中的对象和属性,并指定以何种数据类型返回。其位置在HQL语句结果中最前面。
  • from(不可或缺):指定HQL语句查询目标(即映射配置的持久化类及其属性)
  • where:逻辑表达式,设置查询的条件,限制返回的查询结果和范围
  • group by:分组查询子句
  • having:对分组进行条件限制设置
  • order by:指定查询结果中的实例对象的排序

注意的问题:
1、HQL是面向对象的查询语言,查询主体是持久化类及其属性,对Java类名与属性名大小写敏感。(sql查询主体是数据库表及其字段,大小写不敏感)
2、HQL对关键字不区分大小写(习惯小写)。


Query接口: org.hibernate.Query接口。
1、在Query中定义有执行查询的方法,该方法完成对HQL语句的解析和执行过程,并返回查询的结果。(如同JDBC接口解析sql语句)
过程: Hibernate框架解析HQL查询语句,根据映射配置信息,把HQL查询语句解析成相应的SQL语句来执行数据库的查询操作,此过程依靠的就是Query接口
2、Query接口支持方法链的编程风格,使得程序代码更简洁。在Query接口中,使用方法链编程最多的场景是查询参数的动态设置,特别是多个参数的设置。
方法链编程:就是调用方法后,返回的方法结果还是调用方法的这个对象,可以在调用方法后直接调用该对象的其他方法。这样用一条程序语句来完成多个方法的调用和执行。

Query实例的创建:

通过Session接口的createQuery()方法创建Query实例对象。同时createQuery()方法包含一个HQL查询语句参数,createQuery(hql)
创建好一个包含HQL查询语句的Query实例对象之后,执行查询。

Query执行查询:

Query接口的list()方法执行HQL查询,这个方法会解析Query对象传入的hql语句。list()方法在HQL查询完成之后返回结果数据类型为java.util.List,List集合中存放符合查询条件的持久化对象。


例:在数据库创建表seller,创建映射配置文件Seller.hbm.xml,创建工具类HibernateSessionFactory。
测试类SellerTest:

package com.model;

import java.util.List;

import org.hibernate.Query;
import org.hibernate.Session;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;

import com.util.HibernateSessionFactory;

public class SellerTest {
    private Session session=null; 

    @Test
    public void testSeller(){
        //编写执行查询的HQL语句
        String hql="from Seller";

        //创建Query实例对象
        Query query =session.createQuery(hql);//参数是编写的hql语句

        //调用Query实例对象的list方法来执行HQL查询,这个方法会解析Query对象传入的hql语句
        List<Seller> sellers=query.list();  //查询结果是List集合
        for (Seller seller : sellers) {
        //toString()在工具类中进行了重写,用于测试
            System.out.println(seller.toString());
        }
    }

    @Before
    public void setUp() throws Exception{
        session=HibernateSessionFactory.getCurrentSession();
    }

    @After
    public void teardown() throws Exception{
        session.close();
    }

}

Junit单元测试,控制台:
这里写图片描述

hibernate4框架的增删查改(包含hql)数据等功能方法

本次程序测试的是hibernate4框架的增加、修改、删除、查询等方法,每种功能都集合了几种简单的方法来进行测试,程序猿可按需获取; hibernate框架搭建之后,使用它的流程基本是:获取confi...
  • alan_liuyue
  • alan_liuyue
  • 2016年11月29日 09:10
  • 3860

Hibernate中使用HQL进行查询操作

注意:HQL语言,是基于对象进行查询的,不是基于数据库的表。 1、基本的HQL查询 1.1 使用HQL查询的一般步骤 public void test01() { Session sessio...
  • zbw18297786698
  • zbw18297786698
  • 2016年07月22日 15:27
  • 12032

开发日志:HQL关联查询出现语句正确,但一直查询不出结果的问题

项目开发,使用HQL查询数据库,数据是有的,语句也正确,但是却没有查出预期的数据 产生疑问的HQL语句  SELECT * FROM MMZW.READ_D...
  • kaidishi
  • kaidishi
  • 2013年08月13日 18:05
  • 1325

HQL.pdf数据查询语句

  • 2015年09月25日 09:11
  • 346KB
  • 下载

HQL数据查询基础(一)

源自 imooc 的学习 什么是HQL呢? HQL 是Hibernate Query Language,Hibernate查询语言;同时HQL是一种面向对象的查询语言,HQL查询的主体是映射配置的持...
  • qq_15096707
  • qq_15096707
  • 2016年05月20日 08:23
  • 1340

HQL数据查询基础

HQL的定义:Hibernate  Query Language是面向对象的查询语言,映射的持久层的类,Hibernate可以自行把HQL转化为SQL,从而进行操作。 注意:HQL映射的是持久层的类...
  • qq_33774822
  • qq_33774822
  • 2016年09月05日 14:19
  • 186

HQL数据查询基础笔记

以下内容来自慕课网视频—-《HQL数据查询基础》 第二章 了解HQL 第三章 准备查询 3-2 Query接口简介 3-3 Query接口应用编程示例 第四章 检索对象-from子句 第五章 选择-s...
  • qq_33547950
  • qq_33547950
  • 2016年08月18日 14:52
  • 482

【SSH】使用HQL查询数据

一、前言      小编先前使用过SQL,基本语法自己也会使用。后来在项目中遇到了HQL,稍微有点不同,他到底是什么呢?二、什么是HQL?      HQL(Hibernate Query Langu...
  • kisscatforever
  • kisscatforever
  • 2016年11月28日 20:29
  • 1313

解决方法:hql查询无主键表中的数据,返回的结果全是一样的!

在oracle中定义了表titlerecord,其中没有主键,测试数据两条: 001 房门 管理学院 博士 教授 2011-04-12  2011-04-15 001 房门 管理学院 博士 ...
  • gangwazi0525
  • gangwazi0525
  • 2011年09月08日 14:38
  • 3098

Hibernate——HQL数据查询

Hibernate——HQL数据查询Hibernate Query Language,Hibernate查询语言。 HQL是面向对象的查询语言。HQL的查询主题是映射配置的持久化类及其属性。SQL查...
  • winfredzen
  • winfredzen
  • 2016年05月19日 11:43
  • 703
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:HQL数据查询
举报原因:
原因补充:

(最多只允许输入30个字)