HQL ,Hibernate Query Language ,是Hibernate查询语言,不直接操作数据表,而是操作实体类,根据实体类和对应数据表中的映射关系,查找数据。

下面是hql的基本步骤:

 1.获取session 

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

 2.构建hql语句
  String hql="from Dept ";

 3.得到query对象
  Query query=session.createQuery(hql);

 4.得到查到的结果

  List<Dept> list=query.list();

  或者

  Iterator<Dept> it=query.iterate();

下面是几个hql例子

①职位是店员,如:job='CLERK'

工资大于1000元,如:salary>1000

 入职时间在1981年4月1日至1985年9月9日之间

 public void SearchCondition(){
/**
* 职位是店员,如:job='CLERK'
* 工资大于1000元,如:salary>1000
* 入职时间在1981年4月1日至1985年9月9日之间
*/
Session session=null;
try {
session=new Configuration().configure().
buildSessionFactory().openSession();
//1.通过辅助类对象统一处理命名参数
//创建辅助类的对象
ConditionEmp cm=new ConditionEmp();
cm.setJob("CLERK");
cm.setSalary(566666);
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
cm.setHireDateBegin(sdf.parse("2000-10-27"));
cm.setHireDateEnd(sdf.parse("2003-12-12")); StringBuilder hql=new StringBuilder("from Emp as emp where 1=1"); //上面的数据有的有,有的木有
if(null!=cm.getJob()){
//工作不是空的
hql.append(" and emp.job=:job");
} if(0!=cm.getSalary()){
hql.append(" and emp.salary>:salary");
}
if(null!=cm.getHireDateBegin()){
hql.append(" and emp.hiredate>:hireDateBegin");
}
if(null!=cm.getHireDateEnd()){
hql.append(" and emp.hiredate<:hireDateEnd");
}
Query query=session.createQuery(hql.toString());
//处理命名参数
query.setProperties(cm); List<Emp> list=query.list();
for (Emp emp : list) {
System.out.println(emp.getEmpno());
System.out.println(emp.getEmpname());
}
} catch (Exception e) {
e.printStackTrace();
}finally{
session.close();
}
}

② hql分页

  

 public void pageDemo(){
Session session=null;
try {
session=new Configuration().configure().
buildSessionFactory().openSession();
String hql="from Emp order by empno"; Query query=session.createQuery(hql);
//每页显示几条数据
int pageSize=2; //计算总记录(总条数)
String countHql="select count(*) from Emp"; //接收数字
int count=((Long)session.createQuery(countHql).uniqueResult()).intValue(); //计算总页数
int totalPage=(count%pageSize==0)?(count/pageSize):(count/pageSize+1); //页号
int pageIndex =1; //设置每页显示的最大记录数字
query.setMaxResults(pageSize);
//设置从第几条开始输出,不包括该条
query.setFirstResult((pageIndex-1)*pageSize); List<Emp> list=query.list();
System.out.println("总页数是:"+totalPage); for (Emp emp : list) {
System.out.println(emp.getEmpno());
System.out.println(emp.getEmpname()); } } catch (Exception e) {
e.printStackTrace();
}finally{
session.close();
}
}

 

HQL查询的更多相关文章

  1. Hibernate--------八大类HQL查询集合

    Hibernate的   八大类HQL查询集合 Hibernate的八大类HQL查询集合: 一:属性查询(SimplePropertyQuery) 1,单一属性查询 *返回结果集属性列表,元素类型和实 ...

  2. [NHibernate]HQL查询

    目录 写在前面 文档与系列文章 查询的几种方式 HQL查询 一个例子 总结 写在前面 上篇文章介绍了nhibernate在项目中的基本配置,包括数据库连接字符串的设置,映射文件的配置及需注意的地方,这 ...

  3. hibernate学习(7)——HQL查询

    1.HQL查询定义 Hibernate查询分类: 1. get/load 根据OID检索 2. 对象视图检索 c.getOrders 3. Sql语句 createSqlQuery 4. Hql语句 ...

  4. HQL查询——聚集函数

    HQL查询--聚集函数 HQL也支持在选出的属性上使用聚集函数.HQL支持的聚集函数与SQL的完全相同: (1)avg:计算属性平均值: (2)count:统计选择对象的数量: (3)max:统计属性 ...

  5. HQL查询——关联和连接

    HQL查询--关联和连接 为了便于理解有关的使用关联和连接进行HQL查询,首先提供两个具有关联关系的持久化类:Person类和MyEvent类 Person类: import javax.persis ...

  6. HQL查询——from子句

    HQL查询--from子句 1.from是最基本的HQL语句,from关键字后紧跟持久化类的类名: from Person 表示从Person持久化类中选出全部的实例. 2.推荐为持久化类的每个实例起 ...

  7. HQL查询——HQL查询的基本用法

    HQL查询--HQL查询的基本用法 1.HQL语法类似于SQL语法,但是需要注意的是,HQL是一种完全面向对象的查询语言.SQL语言操作的对象是数据表.列等数据库对象,而HQL语言的操作对象是类.实例 ...

  8. 转: Hibernate HQL查询 插入 更新(update)实例

    1.实体查询:有关实体查询技术,其实我们在先前已经有多次涉及,比如下面的例子:String hql=”from User user ”;List list=session.CreateQuery(hq ...

  9. NHibernate系列文章二十二:NHibernate查询之HQL查询(附程序下载)

    摘要 NHibernate提供了多种查询方式,最早的HQL语言查询.Criteria查询和SQL Query,到NHibernate 3.0的Linq NHibernate,NHIbernate 4. ...

  10. HQL查询语句

    查询语言 Hibernate 查询语言(HQL)是一种面向对象的查询语言,类似于 SQL,但不是去对表和列进行操作,而是面向对象和它们的属性. HQL 查询被 Hibernate 翻译为传统的 SQL ...

随机推荐

  1. Eclipse换背景

    http://tieba.baidu.com/p/2128040173 1.打开Eclipse的Help->Eclipse Marketplace 2.在Find里搜索Eclipse Color ...

  2. QT5-控件-QLabel和QLCDNumber-标签显示图片或者视频,LCD用于上位机不错

    #ifndef MAINWINDOW_H #define MAINWINDOW_H #include <QMainWindow> #include <QLabel> #incl ...

  3. UVA11538Chess Queen(组合数学推公式)

    转载请注明出处: http://www.cnblogs.com/fraud/          ——by fraud 题目意思:在n*m的棋盘中放置两个不同的皇后,使得两者能够相互攻击,共有多少种放置 ...

  4. SSM框架搭建java.lang.ClassNotFoundException: org.springframework.http.converter.json.MappingJacksonHttpMessageConverter

    在搭建 spring springMVC Mybatis 时候出错 将org.springframework.http.converter.json.MappingJacksonHttpMessage ...

  5. 利用js得到某个范围内的整数随机数

    Math.random()方法可以返回(0,1)之间的随机数,不包括0和1. 套用公式:Math.floor(Math.random()*可能的值的总数+第一个可能的值) 如得到(3,9]之间的随机数 ...

  6. Axure矩形边框重合边框变成双倍宽度解决办法

    选中两个矩形,菜单栏选择项目——项目设置——边界对齐(选择中心边界沿形状的边缘或者内边界对齐.将外边界对齐改为内边界对齐),即可去掉重合效果

  7. 转载:CURL常用命令

    转载网址:http://www.cnblogs.com/gbyukg/p/3326825.html 下载单个文件,默认将输出打印到标准输出中(STDOUT)中 curl http://www.cent ...

  8. 读书笔记 -part1

    自从毕业以后到现在~看的书是越来越少了 の其实好像貌似从来没有认认真真的看书  除非工作遇到难于解决的问题迫不得已才去翻书看 有些问题也是莫名其妙的就这样解决了  于是乎被人美名其曰“高人”或&quo ...

  9. Python自动化运维之10、模块之json、pickle、XML、PyYAML、configparser、shutil

    序列化 Python中用于序列化的两个模块 json     用于[字符串]和 [python基本数据类型] 间进行转换 pickle   用于[python特有的类型] 和 [python基本数据类 ...

  10. PHP浮点数的一个常见问题的解答

    作者: Laruence 本文地址: http://www.laruence.com/2013/03/26/2884.html 转载请注明出处 关于PHP的浮点数, 我之前写过一篇文章: 关于PHP浮 ...