HQL查询基础

package qau.edu.search;

import qau.edu.search.Employee;
import java.util.List;

import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;

public class SearchTest {

private Session session ;
private Transaction tr ;

@Before
public void init(){

// 打开Session ;

session = new Configuration().configure().buildSessionFactory().openSession();

// 开启事务;

tr = session.beginTransaction();

}

@After
public void destroy(){

// 提交事务;

tr.commit();

// 关闭会话;

session.close();
}

// “位置绑定”查询;

@Test
public void testHQL() {

// 创建Query对象;

String hql = "from Employee e where e.name like ? and e.sal > ? ";

Query query = session.createQuery(hql);

// 绑定参数;

// 这里的数字0和1表示的含义要知道,表示的是占位符,从这里能体会到“位置绑定”的含义;

query.setString(0, "%%")
.setFloat(1, 5000);

// 打印输出;

List<Employee> emps = query.list();

System.out.println(emps.size());

}

// “命名参数”的查询;

@Test
public void testHQL2() {

// 创建Query对象;

// 注意的是:在进行编写查询条件的时候,:是紧紧跟着后面的命名的,不允许出现空格。

String hql = "from Employee e where e.name like :name and e.sal > :sal ";

Query query = session.createQuery(hql);

// 绑定参数;

query.setString("name", "%%")
.setFloat("sal", 5000);

// 打印输出;

List<Employee> emps = query.list();

System.out.println(emps.size());

}

// 实体绑定;
@Test
public void testHQL3() {

// 创建Query对象;

// 注意的是:在进行编写查询条件的时候,:是紧紧跟着后面的命名的,不允许出现空格。

String hql = "from Employee e where e.name like :name and e.sal > :sal and dept = :dept";

Query query = session.createQuery(hql);

// 绑定参数;

Department dept = (Department)session.get(Department.class, 80);

query.setString("name", "%%")
.setFloat("sal", 5000)
.setEntity("dept", dept);

// 打印输出;

List<Employee> emps = query.list();

System.out.println(emps.size());

}

}

时间: 2024-11-05 05:33:38

HQL查询基础的相关文章

HQL数据查询基础(一)

源自 imooc 的学习 什么是HQL呢? HQL 是Hibernate Query Language,Hibernate查询语言:同时HQL是一种面向对象的查询语言,HQL查询的主体是映射配置的持久化类及其属性.而SQL查询的主体是数据库表,它们两者查询主体是完全不同的.SQL能实现的查询功能,HQL几乎同样也都能实现.实际上Hibernate框架会解析HQL语句,并将HQL语句转化为SQL语句,来完成数据库的操作. HQL提供了丰富灵活的查询特性,是Hibernate官方推荐的查询方式. H

Java_Web三大框架之Hibernate+HQL语言基础

12.1 HQL语言基础Hibernate查询语言为HQL(Hibernate Query Language),可以直接使用实体类名及属性.HQL语法类似于SQL,有SQL的关键词如select.from.order by.count().where等等.不同的是HQL是一种完全面向对象的语言,能够直接查询实体类及属性.12.1.1 HQL语法HQL语法类似于SQL,是一种select...from...的结构.其中,from后跟的是实体类名,而不是表名.select后面跟的可以是实体对象,也可

Java学习笔记-Hibernate HQL查询

Session是持久层操作的基础,相当于JDBC中的Connection,通过Session会话来保存.更新.查找数据.session是Hibernate运作的中心,对象的生命周期.事务的管理.数据库的存取都与Session有关Session由SessionFactory创建,是线程安全的Thread-Safe,可以让多个线程同时存取SessionFactory而不会有数据共享的问题 Hibernate中Session的解释 :http://blog.csdn.net/shrek_xu/arti

【Hibernate步步为营】--hql查询之实体对象查询

上篇文章简单介绍了hql它作为Hibernate的查询语言,封装了基本上SQL的所有查询操作,HQL能够实现对数据库文件的增删改查,该篇文章着重讨论HQL实体对象的查询方法. 一.实体对象查询 实体对象查询是hql查询的基础,作为一种对象查询语言,在查询操作时和sql不同,查询字符串中的内容要使用类名和类的属性名来代替.这种查询方法相对简单,只要有SQL功底,使用hql是很简单的,但是有一些问题需要注意,就是查询获取数据不是目的,需要考虑的是如何编写出高效的查询语句,这才是讨论的重点. 1.1

Hibernate框架之HQL查询与Criteria 查询的区别

Hibernate框架提供了HQL查询和Criteria 查询.下面对这两种查询分别做个例子.也好对这两种查询方法有个大概的了解.就用房屋信息表做例子,查询所有房屋信息. HQL语句查询所有房屋信息: /* * 查询所有房屋 * * (non-Javadoc) * @see Dao.HouseDao#selecthouse() */ public List<House> selecthouse() { // TODO Auto-generated method stub //获取连接 Sess

[NHibernate]HQL查询

目录 写在前面 文档与系列文章 查询的几种方式 HQL查询 一个例子 总结 写在前面 上篇文章介绍了nhibernate在项目中的基本配置,包括数据库连接字符串的设置,映射文件的配置及需注意的地方,这篇文章将介绍nhibernate的查询方法. 文档与系列文章 [Nhibernate]体系结构 [NHibernate]ISessionFactory配置 [NHibernate]持久化类(Persistent Classes) [NHibernate]O/R Mapping基础 [NHiberna

Hibernate(十二):HQL查询(一)

概述 Hibernate提供了以下几种检索对象的方式 1)导航对象图检索方式:根据已经加载的对象导航到其他对象: 2)OID检索方式:按照对象的OID来检索对象: 3)HQL检索方式:使用面向对象的HQL查询语言: 4)QBC检索方式:使用QBC(Query By Criteria)API来检索对象.这种API封装了基于字符串形式的查询语句,提供了更加面向对象的查询接口. 5)本地SQL检索的方式:使用本地数据的SQL查询语句. HQL(Hibernate Query Language)面向对象

Hibernate HQL查询:

Hibernate HQL查询:Criteria查询对查询条件进行了面向对象封装,符合编程人员的思维方式,不过HQL(Hibernate Query Lanaguage)查询提供了更加丰富的和灵活的查询特性,因此Hibernate将HQL查询方式立为官方推荐的标准查询方式,HQL查询在涵盖Criteria查询的所有功能的前提下,提供了类似标准SQL语句的查询方式,同时也提供了更加面向对象的封装.完整的HQL语句形势如下:Select/update/delete…… from …… where …

使用hql查询时的异常:Xxx is not mapped[from Xxx where ...]

今天项目中使用hql查询时,出现    QingAoCenterInfo is not mapped[from QingAoCenterInfo where...] 显然是Hibernate映射关系出现了问题. 出现这种异常首先要查看查询语句中是否使用了数据库表中的表名,而不是实体类. 查看我的代码: centerList = manager.find("from QingAoCenterInfo center where center.type = ? and center.centerNam