Hibernate支持三种查询语言:HQL查询、Criteria查询和原生SQL查询

HQL(hibernate Query Language,hibernate查询语言)是一种面向对象查询语言,其中没有表和字段的概念,只有类、对象和属性的概念

语法:

  form子句:form +全类名  /   form  +  类名(查询所有)

  select子句:select  dept.deptname from Dept

  where子句:from dept where deptName='sales';

HQL执行语句

   例子:form子句、select子句、where子句以及参数查询

    建立实体类

  

public class Dept {
private Integer deptno;
private String dname; public Dept() {
} public Dept(Integer deptno, String dname) {
this.deptno = deptno;
this.dname = dname;
} public Integer getDeptno() {
return deptno;
} public void setDeptno(Integer deptno) {
this.deptno = deptno;
} public String getDname() {
return dname;
} public void setDname(String dname) {
this.dname = dname;
}
}

测试方法

package cn;

import cn.happy.entity.Dog;
import cn.hib.entity.Dept;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.junit.Before;
import org.junit.Test; import java.util.List; /**
* Created by a on 2017/8/20.
*/
public class Test924 {
Configuration cfg;
SessionFactory factory;
Session session;
Transaction tx; @Before
public void beforeTest(){
//创建配置对象
cfg=new Configuration().configure();
//根据配置对象创建SessonFactory
factory=cfg.buildSessionFactory();
//根据SessionFactory创建Session
session=factory.getCurrentSession();
//session=factory.openSession();
//开启事务
tx=session.beginTransaction();
} @Test
public void testlist(){
String hql="from Dept";
Query query=session.createQuery(hql);
List<Dept> list=query.list();
for (Dept dept : list){
System.out.println(dept.getDname());
}
}
@Test
public void selectSomeColumnFromTable(){
String hql="select dept.deptno,dept.dname from Dept";
Query query=session.createQuery(hql);
List<Object[]>list=query.list();
for(Object[] obj : list){
for (Object child : obj){
System.out.println(child);
}
}
}
@Test
public void selectSomesColumnFromTable(){
String hql="select new Dept(dept.deptno,dept.dname) from Dept dept";
Query query=session.createQuery(hql);
List<Dept> list=query.list();
for (Dept dept : list){
System.out.println(dept.getDname());
}
}
@Test
public void selectSomeRecordsFromTable(){
String hql="from dept.deptno,dept.dname from Dept dept where dept.dname='RESEARCH'";
Query query=session.createQuery(hql);
List<Dept> list=query.list();
for (Dept dept : list){
System.out.println(dept.getDname());
}
} //案例:参数查询: 方案一:匿名占位符“?”
@Test
public void selectByConditionNiming(){
String hql="from Dept dept where dname=?";
Query query=session.createQuery(hql);
query.setParameter(0,"RESEARCH");
List<Dept> list=query.list();
for(Dept dept : list){
System.out.println(dept.getDname());
}
} //案例:参数查询:方案二:
@Test
public void selectByConditionParametername(){
String hql="from Dept dept where dname=:dname";
Query query=session.createQuery(hql);
query.setParameter("dname","RESEARCH");
List<Dept> list=query.list();
for(Dept dept : list){
System.out.println(dept.getDname());
}
}
//案例:参数查询:方案三:name 参数名称绑定++++对象属性
@Test
public void selectByConditionParameternameAndObjectAttribute(){
String hql="from Dept dept where dname=:dname";
Dept dd=new Dept();
dd.setDname("RESEARCH");
Query query=session.createQuery(hql);
query.setProperties(dd);
List<Dept> list=query.list();
for(Dept dept : list){
System.out.println(dept.getDname());
}
} }

Hibernate=====HQL实用技术的更多相关文章

  1. 第五章 HQL实用技术

    第五章   HQL实用技术5.1  使用HQL查询语句(面向对象查询语句)    5.1.1 编写HQL语句        5.1.1.1 from子句                    例:fr ...

  2. weblogic10异常:org.hibernate.hql.ast.HqlToken

    转自:http://www.programgo.com/article/68682994452/ 在做查询的时候,报出  org.hibernate.QueryException: ClassNotF ...

  3. SSH整合报错:org.hibernate.hql.internal.ast.QuerySyntaxException: User is not mapped[......]

    非常诡异的报错,信息如下:org.hibernate.hql.internal.ast.QuerySyntaxException: User is not mapped [select count(* ...

  4. Hibernate HQL查询:

    Hibernate HQL查询:Criteria查询对查询条件进行了面向对象封装,符合编程人员的思维方式,不过HQL(Hibernate Query Lanaguage)查询提供了更加丰富的和灵活的查 ...

  5. Hibernate学习笔记-Hibernate HQL查询

    Session是持久层操作的基础,相当于JDBC中的Connection,通过Session会话来保存.更新.查找数据.session是Hibernate运作的中心,对象的生命周期.事务的管理.数据库 ...

  6. 解决Eclipse编译器报错ClassNotFoundException:Org.hibernate.hql.ast.HqlToken

    最近开发遇到Eclipse编译器老是报出ClassNotFoundException:Org.hibernate.hql.ast.HqlToken [from User Where id=1] 的错误 ...

  7. java.lang.IllegalStateException: No data type for node: org.hibernate.hql.ast.tree.MethodNode(尼玛,蛋疼的错误)

    java.lang.IllegalStateException: No data type for node: org.hibernate.hql.ast.tree.MethodNode   \-[M ...

  8. Hibernate HQL详细说明

    1.  Hibernate HQL详细说明 1.1.  hql一个简短的引论 Hibernate它配备了一种非常强大的查询语言.这种语言看起来非常像SQL.但是不要 要对相位的语法结构似,HQL是很有 ...

  9. WebLogic使用SSH架构部署遇到org.hibernate.hql.internal.ast.HqlTok

    其实这个问题在以前就遇到过,当时解决了,但今天在部署一个测试轻应用的时候一直没有想起来,特此记录一下. 这个问题出现在使用WebLogic(我使用的是10.3.5版本)发布SSH架构的应用.在操作数据 ...

随机推荐

  1. Flink应用场景

    本文为<Flink大数据项目实战>学习笔记,想通过视频系统学习Flink这个最火爆的大数据计算框架的同学,推荐学习课程: Flink大数据项目实战:http://t.cn/EJtKhaz ...

  2. SDUT OJ 多项式求和

    多项式求和 Time Limit: 1000 ms Memory Limit: 65536 KiB Submit Statistic Discuss Problem Description 多项式描述 ...

  3. BDD 相关整理---介绍

    # BDD介绍 ### 什么是BDD Behavior-driven development In software engineering, behavior-driven development ...

  4. js事件处理程序return false ,preventDefault,returnValue

    面试题目中,经常会被问到如何阻止默认行为. 以下是<javascript权威指南>书中的内容,详情可以去看书. 能够取消事件默认操作的方法有三种 1.属性注册的事件处理程序的返回值fals ...

  5. 012 Android Palette颜色选择器的使用

    1.页面总体使用线性布局(LinearLayout) 2.将Toolbar(顶部菜单栏)拖入design模式下的设计界面中 3.颜色选择器需要在build.gradle中手动的添加 compile ' ...

  6. PHP 备份还原 MySql 数据库

    原生 PHP 备份还原 MySql 数据库 支持 MySql,PDO 两种方式备份还原 php5.5 以上的版本建议开启pdo扩展,使用 pdo 备份还原数据 备份文件夹 db_backup.impo ...

  7. 167 Two Sum-Input array is sorted, 125 Valid Palindrome,344

    注意这两个元素不能是相同的. 解法一:二分查找法,逐一取数组中的值,然后second = target - numbers[i] , 用二分查找法求第二个值. 时间复杂度:O(nlongn) clas ...

  8. POJ - 2891 中国剩余定理

    \(mod\)存在不互素情况下的CRT #include<iostream> #include<algorithm> #include<cstdio> #inclu ...

  9. c#项目后期生成事件命令行常用命令

    1.   xcopy (复制文件) xcopy参数介绍 命令格式:XCOPY source [destination] 一堆可选的参数 参数介绍 source 指定要复制的文件. destinatio ...

  10. Scrum3.0 敏捷开发白皮书

    一.什么是敏捷? 敏捷是一种以用户需求为核心.采用不断迭代的方式进行的软件开发模式.敏捷依靠自组织 的跨职能小团队,在短周期内,做出小块的东西来,通过快速.频繁的迭代,迅速的获取反 馈,进而不断的完善 ...