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. Nginx 进行性能配置

    总所周知,网络上我们购买的服务器的性能各不相同,如果采用 Nginx 的默认配置的话,无法将服务器的全部性能优势发挥出来,我们应该选择适合自己需求的配置. 当我们默认安装后 Nginx 后,我们便得到 ...

  2. 题解 P3386 【【模板】二分图匹配】

    题目链接 首先呢声明一下,本宝宝发这篇题解只是为了(goto a;) 个人还是比较喜欢跑dinic暴力跑最大流...竟然比匈牙利还快..如果说不懂网络流的~~蒟蒻~~大佬们.可以看看这个(反正我就是在 ...

  3. DOS远程桌面连接命令[佚名]

    DOS远程桌面连接命令 mstsc /v: 192.168.1.250 /console cmd 运行 command 删除文件 rd 文件名/S 创建文件 MD 文件名 net user admin ...

  4. form表单提交回调函数

    form表单没有回调函数,不过可以通过jquery-form.js这个插件来实现回调函数: <form id="addform" class="form-horiz ...

  5. SqlServer批量插入(SqlBulkCopy、表值参数)

    之前做项目需要用到数据库的批量插入,于是就研究了一下,现在做个总结. 创建了一个用来测试的Student表: CREATE TABLE [dbo].[Student]( [ID] [int] PRIM ...

  6. js定时器的结束和开始

    今天在做一个页面的报表的时候,需要在报表内容改变后屏蔽掉页面上的一些选择框. 因为这个报表是自身的链接实现的改变,我只能读取到history改变了,基于这个来判断 我写了一个判断条件,然后将他放在了一 ...

  7. 119th LeetCode Weekly Contest Largest Perimeter Triangle

    Given an array A of positive lengths, return the largest perimeter of a triangle with non-zero area, ...

  8. java 并发完成任务之CountDownLatch

    1.CountDownLatch是一个同步辅助类,犹如倒计时计数器,创建对象时通过构造方法设置初始值,调用CountDownLatch对象的await()方法则处于等待状态,调用countDown() ...

  9. Scala构建工具sbt的配置

    时间是17年12月24日.初学Scala,想使用它的标配构建工具sbt,结果好大一轮折腾,因为公司隔离外网,需要内部代理,所以尤其折腾.下面的配置参考了好多篇不同的文章,已经没法一一留下出处了.而且还 ...

  10. css引入 以及选择器040

    css的介绍: css(Cascading Style Sheet)  层叠样式表 作用就是给HTML页面标签议案家各种样式 定义网页效果 简单来说 就是讲网页内容和显示样式进行分离 , 提高了显示功 ...