HQL查询
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查询的更多相关文章
- Hibernate--------八大类HQL查询集合
Hibernate的 八大类HQL查询集合 Hibernate的八大类HQL查询集合: 一:属性查询(SimplePropertyQuery) 1,单一属性查询 *返回结果集属性列表,元素类型和实 ...
- [NHibernate]HQL查询
目录 写在前面 文档与系列文章 查询的几种方式 HQL查询 一个例子 总结 写在前面 上篇文章介绍了nhibernate在项目中的基本配置,包括数据库连接字符串的设置,映射文件的配置及需注意的地方,这 ...
- hibernate学习(7)——HQL查询
1.HQL查询定义 Hibernate查询分类: 1. get/load 根据OID检索 2. 对象视图检索 c.getOrders 3. Sql语句 createSqlQuery 4. Hql语句 ...
- HQL查询——聚集函数
HQL查询--聚集函数 HQL也支持在选出的属性上使用聚集函数.HQL支持的聚集函数与SQL的完全相同: (1)avg:计算属性平均值: (2)count:统计选择对象的数量: (3)max:统计属性 ...
- HQL查询——关联和连接
HQL查询--关联和连接 为了便于理解有关的使用关联和连接进行HQL查询,首先提供两个具有关联关系的持久化类:Person类和MyEvent类 Person类: import javax.persis ...
- HQL查询——from子句
HQL查询--from子句 1.from是最基本的HQL语句,from关键字后紧跟持久化类的类名: from Person 表示从Person持久化类中选出全部的实例. 2.推荐为持久化类的每个实例起 ...
- HQL查询——HQL查询的基本用法
HQL查询--HQL查询的基本用法 1.HQL语法类似于SQL语法,但是需要注意的是,HQL是一种完全面向对象的查询语言.SQL语言操作的对象是数据表.列等数据库对象,而HQL语言的操作对象是类.实例 ...
- 转: Hibernate HQL查询 插入 更新(update)实例
1.实体查询:有关实体查询技术,其实我们在先前已经有多次涉及,比如下面的例子:String hql=”from User user ”;List list=session.CreateQuery(hq ...
- NHibernate系列文章二十二:NHibernate查询之HQL查询(附程序下载)
摘要 NHibernate提供了多种查询方式,最早的HQL语言查询.Criteria查询和SQL Query,到NHibernate 3.0的Linq NHibernate,NHIbernate 4. ...
- HQL查询语句
查询语言 Hibernate 查询语言(HQL)是一种面向对象的查询语言,类似于 SQL,但不是去对表和列进行操作,而是面向对象和它们的属性. HQL 查询被 Hibernate 翻译为传统的 SQL ...
随机推荐
- redux-simple 简化版的redux
作为react的粉丝,当然要吐槽一下react组件通信问题.react的单向数据流是组件通信的一大阻碍,只允许父组件向子组件传值,子组件向父组件传值只能通过父组件向子组件传递回调函数实现.如果在深层次 ...
- mysql 5.5 升级到 mysql 5.6
目前MySQL数据库软件升级到5..26版本,主要有两种方法.一种是停机升级,即在现有环境下先停止数据库,然后升级数据库软件版本和数据库版本:另外一种是采用不停机的主从升级(master--slave ...
- Gradle一分钟实现Spring-MVC
前提: 1,已安装JDK 2, 有Intellij IDEA 3, 已安装Gradle 一分钟实现步骤: 1,mkdir Spring-MVC;cd Spring-MVC2,gradle init3, ...
- css3动画和jquery动画使用中要注意的问题
前一阵子写demo的时候遇到这样一个问题,就是给元素添加css3或者jquery动画时,在动画结束前不能准确取到元素的css属性. 1. css3动画讨论 先看代码: html: <div id ...
- JAVA程序优化之字符串优化处理
字符串是软件开发中最为重要的对象之一.通常,字符串对象或其等价对象(如char数组),在内存中总是占据了最大的空间块.因此如何高效地处理字符串,必将是提高系统整体性能的关键所在. 1.String对象 ...
- linux下实现rm()函数删除文件或目录
转载请注明原创:http://www.cnblogs.com/StartoverX/p/4600866.html 在linux下有两个函数可以用来删除文件: #include <unistd.h ...
- 像素转换mm
public static double MillimetersToPixelsWidth(double length) //length是毫米,1厘米=10毫米 { System.Windows.F ...
- 64位系统ADB
应该把ADB文件放在C:\Windows\SysWOW64目录下面,而不是System32下.
- CentOS 6.4 编译Open vSwitch2.0
1. 安装依赖软件 yum install automake openssl-devel rpmrebuild kernel-devel make redhat-rpm-config gcc redh ...
- static class
http://msdn.microsoft.com/zh-cn/library/79b3xss3(VS.80).aspx 不可被继承