`
shangguanwufan
  • 浏览: 4748 次
最近访客 更多访客>>
社区版块
存档分类
最新评论

HQL实用技术

阅读更多

 

是一种hibernate查询语言,是hibernate识别的数据库查询语言。

是一种面向对象的查询语言,没有表,字段的概念只用对象属性的概念。

因为hibernate存在方言hibernate按照方言的指定将HQL查询转化成所对应的不同的数据库环境语言

使用HQL进行查询避免JDBC的复杂步骤,只需要四部

1、  得到session

2、编写HQL语句

3、 创建Query对象

4、执行查询,得到结果,结果是一个list

例:

    public static void main(String[] args) {

        // 编写查询语句

        // --Street是实体类的类名,而不是数据库里面的名字,区分大小写

        // String sql="select *  from Street as street ";

        // String sql = "from Street ";// 等价于上sql

        // --h.titletitleHouse对象的属性而非数据库中title字段

        String hql = "from House as h where h.title like '%' and h.floorage between 1 and 50000";

        // 打开一个session

        Session session = HibernateSessionFactory.getSession();

        // 创建query

        Query query = session.createQuery(hql);

        // 执行查询--返回一个封装好的list,它根据ORM映射查询后找到对应的实体进行了封装

        List<House> streetList = query.list();

        session.close();

        for (int i = 0; i < streetList.size(); i++) {

            System.out.println(streetList.get(i).getTitle()

                    +"~~"+ streetList.get(i).getFloorage());

        }

   }

Where子句:

String hql = "from House as h where h.title like '%x%' and h.floorage between 1 and 50000";

(部分)属性查询:

   1public List<Users> findByName(String name) {

        // String hql =

        // "select u.id,u.telephone from Users as u where u.name like '%"

        // + name + "%'";

        String hql = "select new Users(u.id,u.telephone) from Users as u where u.name like '%"//封装成对象,实体中必须有和此封装对应的构造函数

                + name + "%'";

        Session session = super.getSession();

        Query query = session.createQuery(hql);

        List<Users> list = query.list();

        session.close();

        return list;

    }

 

    public static void main(String[] args) {

        List<Users> list = new UsersDaoImpl().findByName("a");

        for (int i = 0; i < list.size(); i++) {

            Users items = list.get(i);

            System.out.println(items.getId() + "   " + items.getTelephone());

        }

   }

 

参数绑定:

  name命名参数,根据此参数名进行参数设定

 

2

public List<House> findByTitleAndFloorage(String title, int floorage) {

       String hql = "from House as h where h.title like :title and h.floorage=:floorage";

       Session session = super.getSession();

       Query query = session.createQuery(hql);

       query.setString("title", "%"+title+"%");

       query.setInteger("floorage", floorage);

       List<House> houseList = query.list();

       session.close();

       return houseList;

   }

 

HQL常用聚合函数

Count()

public long computeHouseCount(int userId){

        String hql="select  count(h.id) from House as h where h.userId=?";

        Session session=super.getSession();

        Query query=session.createQuery(hql);

        query.setInteger(0, userId);

        List list=  query.list();

        //int ret=(Integer)list.get(0);

        long ret=(Long)query.uniqueResult();//得到一个值

        session.close();

        return ret;

   }

Max() min()

select max(h.price),min(h.price) from House as h

select h from House as h where datepart(yyyy,h.pubdate)=?

Avg() sum()

分组

 

分页

Query实现简单的分页

 setFirstResultint fr),记录第一条记录的位置(pageIndex-1*pageSize

setMaxResultint mr)设置最大返回记录数 pageSize

例:

/**

     * 分页查询

     */

    public List<House> findAll(int pageNo, int pageSize) {

       String hql="from House as h order by h.pubdate desc";

       Session session=super.getSession();

        Query query=session.createQuery(hql);

        query.setMaxResults(pageSize);

        query.setFirstResult((pageNo-1)*pageSize);

        List<House> houseList=query.list();

        return houseList;

   }

分享到:
评论

相关推荐

    03-HQL实用技术.pdf

    ### HQL实用技术知识点概述 #### 一、配置关联关系 **1.1 单向一对多关联关系** - **定义**: 单向一对多关联指的是一个父对象可以拥有多个子对象,但子对象并不知道它的父对象是谁。 - **配置方法**: - 在父对象...

    HQL 实用技术

    HQL 实用技术

    hql总条数.txt

    根据给定的文件信息,我们可以深入探讨HQL(Hibernate Query Language)在查询数据库记录总数中的应用,以及如何在Java环境中使用...通过深入理解和熟练掌握HQL查询技巧,可以显著提高数据库操作的效率和程序的健壮性。

    HQL查询及语法

    ### HQL查询及语法详解 ...总之,掌握HQL对于任何从事Java Web开发的技术人员来说都是至关重要的。它不仅提高了数据库操作的效率,还使得代码更加简洁、易于理解和维护,是连接Java对象世界与数据库世界的桥梁。

    Hibernate 课件_HQL

    ### Hibernate 课件_HQL 知识点解析 #### HQL查询 ...这些知识点涵盖了HQL的基本概念、查询方法、各种高级查询技巧以及Session的管理等方面,希望能够帮助大家更好地理解和掌握Hibernate的HQL查询技术。

    Hibernate教程(数据查询)HQL,PDF格式

    - 《Java Persistence with Hibernate》:由Christian Bauer等人编写的书籍,涵盖了Hibernate的高级主题,包括HQL的高级使用技巧。 总之,Hibernate和HQL是现代Java应用程序中不可或缺的一部分,了解并熟练掌握这些...

    HQL批量插入、更新和删除

    - **批量更新**:对于批量更新操作,可以使用HQL的`UPDATE`语句。例如,要更新所有用户的密码,可以执行如下HQL语句: ```java String hql = "UPDATE User SET password = :newPassword WHERE id = :userId"; ...

    hql模糊查询hql模糊查询

    根据提供的文件信息,本文将详细解析HQL(Hibernate Query Language)中的模糊查询技术,并通过具体的代码示例来阐述不同方式下的实现方法。 ### HQL模糊查询概述 HQL是Hibernate框架提供的一种面向对象的查询语言...

    HQL与SQL的区别

    这意味着,HQL允许使用类名和属性名来代替表名和列名,使得查询更符合面向对象的编程思想。 SQL则是一种纯粹的关系型查询语言,它的设计完全围绕着关系型数据库的概念,如表、列、行等。SQL查询通常直接针对数据库...

    hql多表查询

    HQL允许开发者使用类似SQL的语法进行数据库操作,但更贴近于面向对象的编程思想。本文将深入探讨HQL多表查询的核心概念、语法结构以及实际应用案例。 ### HQL多表查询的基础概念 HQL支持多种查询方式,包括单表...

    hibernate hql大全

    **Hibernate HQL 全攻略** Hibernate Query Language(HQL)是Hibernate框架提供的面向对象的查询语言,它允许开发者以类和属性的名称进行查询,...学习并实践这些HQL技巧,将极大地提升你在Java持久层开发中的能力。

    Hibernate数据检索(HQL)笔记

    本文档基于魔乐科技李兴华老师的 Hibernate 教程笔记进行整理与扩展,主要介绍了 Hibernate 的数据检索方法,特别是 HQL(Hibernate Query Language)的使用技巧。 #### 二、HQL 基础 HQL 是一种面向对象的查询语言...

    hql的增删改查

    对于大数据量的情况,推荐使用分页技术。 **代码示例:** ```java public List&lt;Item&gt; getAllItems(int pageNo, int pageSize) { Session session = this.getCurrentSession(); String hql = "FROM Item"; Query...

    hql分页

    本篇文章将深入探讨HQL(Hibernate Query Language)中的分页技术,结合源码分析和实用工具,帮助你理解和实现HQL的分页功能。 HQL是Hibernate框架提供的面向对象的查询语言,它类似于SQL,但直接操作对象和类,而...

    Spring中常用的hql查询方法

    在Spring框架与Hibernate技术结合使用时,HQL(Hibernate Query Language)作为对象查询语言被广泛应用于数据查询操作之中。本文将详细解析Spring框架中常用的HQL查询方法及其应用场景。 #### 一、find(String ...

    HQL语言教程[归类].pdf

    《HQL语言教程[归类].pdf》是一个关于Hibernate Query Language(HQL)的详细教程,专注于面向对象的查询技术。HQL是Hibernate框架中用于检索和操作对象关系映射数据的强大工具,其语法和SQL有诸多相似之处,但设计...

    NHibernate HQL 条件查询

    而HQL则是NHibernate提供的一种查询语言,它允许开发人员使用类似于SQL的语法来查询数据库,同时保持了面向对象的特性。 ### NHibernate HQL条件查询详解 #### QBC(Query By Criteria)与HQL对比 在NHibernate中...

    Hibernate_HQL大全

    我们可以使用以下HQL查询: ```hql SELECT cat, mate, kittens FROM Cat as cat LEFT JOIN FETCH cat.mate as mate LEFT JOIN FETCH cat.kittens as kittens WHERE cat.type = '特定类型' ``` 在这个查询中,我们...

    hibernateHQL基本查询

    与传统的 JDBC 方式相比,使用 HQL 进行数据库查询更加便捷、高效且易于维护。 #### 二、HQL 与 SQL 的区别 - **面向对象**:HQL 主要是基于对象的查询,而 SQL 是基于表的查询。 - **语法差异**:虽然 HQL 的语法...

Global site tag (gtag.js) - Google Analytics