`
ccx20060810501
  • 浏览: 33988 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

二、更为复杂的查询实现(Query、Criteria)

SQL 
阅读更多

1.一个简单的例子,根据用户名查询用户信息:

static void query(String name) {
		Session session = HibernateUtil.getSession();
		String queryString = "from User as user where user.id<?";
		Query query = session.createQuery(queryString);
		query.setString(0, name);
		List<User> list = query.list();
		for (User user : list) {
			System.out.println(user);
		}
	}

说明:HQL语句支持多态,举个例子:“from Object” 查询的整个数据库中的所有记录,因为Object是所有类的父类。

 

2.HQL的命名参数和Query接口的分页查询

如果HQL中的占位符‘?’太多,会导致程序难以编写,这时就可以使用“命名参数”:

static void query2(String name,String password) {
		Session session = HibernateUtil.getSession();
		String queryString = "from User as user where user.name=:name and 
                user.password=:password";
		Query query = session.createQuery(queryString);
		query.setString("name", name);
		query.setString("password", password);
		List<User> list = query.list();
		for (User user : list) {
			System.out.println(user);
		}
	}

使用Query实现分页很容易:

query.setFirstResult(firstResult) 和 query.setMaxResults(maxResults)

查询的结果是从firstResult到firstResult+maxResults-1

 

3.使用Criteria实现更加面向对象的条件查询:

static void query(String name) {
		Session session = HibernateUtil.getSession();
		Criteria cri = session.createCriteria(User.class);
		cri.add(Restrictions.eq("name", name)); // 添加约束条件
		List<User> list = cri.list();
		for (User user : list) {
			System.out.println(user);
		}
	}

使用Criteria实现分页和Query基本上是一样的

说明:使用Criteria进行查询,完全不用涉及SQL或者是HQL,如果你对他们不感兴趣,使用Criteria是一个非常不错的选择。Restrictions中有大量的static方法,能够添加各种查询条件。

 

 

 

 

 

 

 

 

 

 

 

 

分享到:
评论

相关推荐

    criteria介绍与使用

    与HQL(Hibernate Query Language)相比,`Criteria`API更接近于面向对象的风格,使得查询构建更为简单明了。 #### 使用示例 下面通过几个具体的例子来展示如何使用`Criteria`API。 ##### 示例1:创建基本查询 `...

    hql criteria分页

    - **灵活性**:Criteria API提供了一种更为灵活的方式来动态构建查询条件,尤其是处理复杂的逻辑组合时更加方便。 - **可读性**:HQL的查询语句相对更加简洁明了,易于理解和维护。 #### 五、总结 本文详细介绍了在...

    HIBERNATE_QUERY

    QBC是一种通过构建表达式树来实现查询的方法,这种方式更灵活,可以动态地添加或移除查询条件。例如: ```java Criteria criteria = session.createCriteria(Cat.class); criteria.add(Restrictions.lt("birthdate...

    Hibernate Criteria用法大全.docx

    Hibernate Criteria API 是一种面向对象的查询方式,它提供了一种比HQL(Hibernate Query Language)更为简洁且直观的查询手段。通过Criteria API,开发者可以构建复杂的查询条件,无需直接编写SQL,使得代码更加...

    QBC的各种查询

    QBC,全称为Query By Criteria,是Java世界中一种基于对象的查询方式,主要用于简化Hibernate框架中的数据查询操作。QBC提供了一种面向对象的方式来构建查询条件,与SQL语句相比,它更易于理解和维护,尤其在处理...

    hibernate查询详解

    例如,对于简单的查询,HQL和Criteria查询可能更为合适;对于复杂的SQL操作,可能需要使用SQL查询;而对于需要复用的查询,命名查询则很有价值。理解并掌握这些查询方式,能够使你在处理数据库操作时更加得心应手。

    Hibernate三大类查询总结.doc

    在处理数据库查询时,Hibernate提供了三种主要的查询方式:Criteria查询、HQL(Hibernate Query Language)和本地SQL。本文将详细探讨这三种查询方式的区别与用法。 首先,Criteria查询是Hibernate提供的一种面向...

    SQLib:Criteria Builder和Hibernate Query Builder的更简单和自定义的实现

    SQLib是一个针对Java开发者的库,它提供了一个更为简洁且可定制化的实现,用于替代标准的JPA Criteria Builder和Hibernate Query Builder。这个库的主要目标是简化数据库查询的构建过程,同时保持灵活性,允许开发者...

    Hibernate Query Language

    - 新增强的Hibernate Criteria Query API,提供了更多高级的查询构建选项。 - HQL,作为核心的查询语言,支持更广泛的查询模式。 - 对于原生SQL方言的支持得到了增强,允许开发者直接使用特定数据库的SQL特性。 ###...

    hibernate中的查询方式

    - **简单易用:** 通过简单的实例化即可实现查询功能。 - **局限性:** 使用范围有限,不适合复杂的查询需求。 **适用场景:** - 查询条件较为简单且明确的情况下。 - 不需要进行复杂查询逻辑的场景。 #### 五、...

    hibernate 三种 查询 方式 load与get的区别

    二、Criteria API查询 Criteria API是另一种在Hibernate中进行查询的方式,它提供了一种更加面向对象的API,可以动态构建查询条件。以下是一个示例,用于根据用户名查找User对象: ```java Criteria criteria = ...

    hibernate查询

    在 Hibernate 中进行查询是其核心功能之一,本文将详细介绍 Hibernate 的几种查询方式,包括 HQL (Hibernate Query Language) 查询、QBC (Query By Criteria) 查询以及 QBE (Query By Example) 查询,并结合示例代码...

    Hibernate教程21_HIbernate查询

    HQL支持复杂的查询,如联接、子查询、聚合函数等,使得数据库操作更为灵活。 ### 查询构建器(Query by Criteria) Query by Criteria是Hibernate提供的另一种查询方式,它提供了一种更面向对象的API来构建查询。...

    Native-SQL查询 (1).ppt

    在IT行业中,数据库操作是不可或缺的一部分,而SQL...虽然HQL通常更为简便且易读,但在处理复杂查询或充分利用数据库特性时,Native SQL是一个非常实用的补充工具。在实际开发中,应根据具体需求选择合适的查询方式。

    J2EE Hibernate-4.ppt

    总之,Hibernate的Criteria Query是J2EE开发中的强大工具,它允许开发者以面向对象的方式构建复杂的数据查询,提高了代码的可读性和可维护性,降低了与数据库的交互难度。在实际开发中,掌握Criteria Query的使用...

    小码哥Hibernate封装的查询方法的皮毛介绍共4页.p

    1. **Criteria API**:这是Hibernate提供的一种面向对象的查询方式,允许开发者通过构建对象来表达查询条件,相比直接编写HQL(Hibernate Query Language)更为灵活。 2. **HQL**:Hibernate的查询语言,类似于SQL...

    浪磬J2EE第一期 Hibernate专题 第六讲 检索方式

    对于动态构建的查询,QBC和Criteria API更为灵活;而对于主键检索,get()和load()能提供高效的解决方案。理解并熟练运用这些检索方式,能够优化J2EE应用的性能,提升开发效率。 综上所述,掌握Hibernate的检索方式...

    (完整版)基于JAVAWEB的高校小吃查询系统的设计与实现毕业设计.pdf

    通过Hibernate框架可以减少开发人员编写底层数据访问代码的工作量,同时通过HQL(Hibernate Query Language)和Criteria API等可以实现复杂的数据查询。 #### Spring框架 Spring是一个全面的企业级应用开发框架,...

    hibernate实现动态表查询的多种解决方案

    特别是在处理多表、多库等复杂场景时,如何实现动态表查询就显得尤为重要。本文将详细介绍几种常见的动态表查询方法,并给出具体的代码示例。 #### 二、核心概念与技术点 1. **命名策略(NamingStrategy)**:...

    Hibernate学习笔记(3)

    - **动态构建查询**:可以通过程序动态地构建HQL查询字符串,实现复杂的查询需求。 #### 三、QBC简介 QBC是一种基于对象的查询方式,它提供了一个API用于构建查询条件。相比于HQL,QBC更加注重代码的结构化和清晰...

Global site tag (gtag.js) - Google Analytics