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. 1.Tomcat配置

    1.启动 解压缩安装包后,点击startup.bat,保持控制台窗口开启 浏览器中输入http://localhost:8080 后看到启动界面则表示启动成功 点击shutdown.bat则关闭Tom ...

  2. static和const关键字的作用

    static关键字至少有下列n个作用: (1)函数体内static变量的作用范围为该函数体,不同于auto变量,该变量的内存只被分配一次,因此其值在下次调用时仍维持上次的值: (2)在模块内的stat ...

  3. uva 12207 - That is Your Queue

    #include <cstdio> #include <iostream> #include <deque> using namespace std; int ma ...

  4. HDU 3721 Building Roads (2010 Asia Tianjin Regional Contest) - from lanshui_Yang

    感慨一下,区域赛的题目果然很费脑啊!!不过确实是一道不可多得的好题目!! 题目大意:给你一棵有n个节点的树,让你移动树中一条边的位置,即将这条边连接到任意两个顶点(边的大小不变),要求使得到的新树的直 ...

  5. 设置Activity显示和关闭时的动画效果

    设置Activity显示和关闭时的动画效果 通过overridePendingTransition方法可以设置Activity显示和关闭的动画效果.首先需要在res/anim目录中建立相应的动画资源文 ...

  6. js获取上传的文件名

    <!DOCTYPE html><html> <head> <meta charset="UTF-8"> <title>& ...

  7. Android基本组件-Activity

    什么是Activity 在Android程序中,每个Activity继承自android.app.Activity, 有一个与之对应的xml布局文件, 一个界面对应一个Activity, 每个Acti ...

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

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

  9. web安全:HTTPS

    E1:搭建zoobar网站开启apache服务和mysql服务service apache2 startservice mysql start 建立数据库和表mysql->create data ...

  10. IOS APP IDs

    感谢分享 说下 APP ID 的组成为  APP ID Prefix + APP ID suffix APP ID Prefix 为10个字符  你不用管它 APP ID Suffix  这个有点讲究 ...