Hibernate=====HQL实用技术
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实用技术的更多相关文章
- 第五章 HQL实用技术
第五章 HQL实用技术5.1 使用HQL查询语句(面向对象查询语句) 5.1.1 编写HQL语句 5.1.1.1 from子句 例:fr ...
- weblogic10异常:org.hibernate.hql.ast.HqlToken
转自:http://www.programgo.com/article/68682994452/ 在做查询的时候,报出 org.hibernate.QueryException: ClassNotF ...
- SSH整合报错:org.hibernate.hql.internal.ast.QuerySyntaxException: User is not mapped[......]
非常诡异的报错,信息如下:org.hibernate.hql.internal.ast.QuerySyntaxException: User is not mapped [select count(* ...
- Hibernate HQL查询:
Hibernate HQL查询:Criteria查询对查询条件进行了面向对象封装,符合编程人员的思维方式,不过HQL(Hibernate Query Lanaguage)查询提供了更加丰富的和灵活的查 ...
- Hibernate学习笔记-Hibernate HQL查询
Session是持久层操作的基础,相当于JDBC中的Connection,通过Session会话来保存.更新.查找数据.session是Hibernate运作的中心,对象的生命周期.事务的管理.数据库 ...
- 解决Eclipse编译器报错ClassNotFoundException:Org.hibernate.hql.ast.HqlToken
最近开发遇到Eclipse编译器老是报出ClassNotFoundException:Org.hibernate.hql.ast.HqlToken [from User Where id=1] 的错误 ...
- 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 ...
- Hibernate HQL详细说明
1. Hibernate HQL详细说明 1.1. hql一个简短的引论 Hibernate它配备了一种非常强大的查询语言.这种语言看起来非常像SQL.但是不要 要对相位的语法结构似,HQL是很有 ...
- WebLogic使用SSH架构部署遇到org.hibernate.hql.internal.ast.HqlTok
其实这个问题在以前就遇到过,当时解决了,但今天在部署一个测试轻应用的时候一直没有想起来,特此记录一下. 这个问题出现在使用WebLogic(我使用的是10.3.5版本)发布SSH架构的应用.在操作数据 ...
随机推荐
- Ubuntu 安装后的配置及美化(一)
Ubuntu 安装后的配置及美化(一) 记录一下 完成后的主界面. 配置 1.更新源为阿里云 找到 软件和更新 选项,更新源为阿里云的源. 在 其他软件 中将 Canonical合作伙伴 打上勾. 然 ...
- PEP 8 – Style Guide for Python Code
原文:PEP 8 – Style Guide for Python Code PEP:8 题目:Python代码风格指南 作者:Guido van Rossum, www.yszx11.cnBarry ...
- 条目八《永不建立auto_ptr的容器》
条目八<永不建立auto_ptr的容器> 重要的事说三次,永不建立auto_ptr的容器,永不建立auto_ptr的容器,永不建立auto_ptr的容器!!! 为什么? 实质是auto_p ...
- 航天独角兽Spacex
2018年2月7日下午3时45分,猎鹰重型火箭在位于卡纳维拉尔角的肯尼迪航天中心LC-39A平台顺利升空.火箭直升云霄,按照既定轨道持续升空,位于美国弗罗里达州卡纳维拉尔角的航天发射中心硝烟四起,非常 ...
- 如何在JAVA中每隔一段时间执行一段程序
可以用线程来做,每隔几秒开一个线程代码如下 public void runTask() { final long timeInterval = 120000;// 两分钟运行一次 final Thre ...
- Apache Shiro(二)-登录认证和权限管理数据库操作
数据库支持 在上一篇中使用ini 配置文件进行了相关权限数据的配置. 但是实际工作中,我们都会把权限相关的内容放在数据库里. 所以本知识点讲解如何放在数据库里来撸. RBAC 概念 RBAC 是当下权 ...
- [转] CSS3垂直手风琴折叠菜单
[From] http://www.html5tricks.com/css3-ver-accordion-menu.html 之前我们已经分享过很多关于手风琴菜单了,有水平方向的,也有垂直方向的.今天 ...
- archlinux升级firefox的flash插件
参考:http://blog.csdn.net/kingolie/article/details/53066415 1. 在https://get.adobe.com/flashplayer/下载文件 ...
- aoj0121
一.题意:类似于华容道,输入是8个数字,输入虽然是一行,但实际是以两行的方式操作的.0表示空位,别的相邻数字可移动到该位置上.求最少移动步骤得到指定的状态. 二.思路:这题可以用BFS来解决.因为在每 ...
- aoj0033
一.题意:有十个数,判断是否能分成两个递增序列 二.思路: 1.dfs:每个数判断在左边或者右边,遍历所有情况. 2.贪心:在保证递增序的前提下,判断一个数放左边或者右边,决定于其更接近于哪一边最上面 ...