Hibernate之HQL总结
来源:互联网 发布:ios屏蔽广告软件 编辑:程序博客网 时间:2024/06/07 07:11
框架下载地址
百度云盘
Hibernate简介
Hibernate是一个开放源代码的对象关系映射框架(ORM),它对JDBC进行了非常轻量级的对象封装,它将POJO与数据库表建立映射关系,是一个全自动的orm框架,hibernate可以自动生成SQL语句,自动执行,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。Hibernate架构包括许多对象持久对象,会话工厂,事务工厂,连接工厂,会话,事务等
更多信息
HQL语言
HQL(Hibernate Query Language)是完全面向对象的查询语言。它提供了更加面向对象的封装,因此它支持继承、多态等特征。HQL基本语法如下:
注意这里查询的都是JAVA类对象select "对象.属性名"from "对象名"where "条件"group by "对象.属性名" having "分组条件"order by "对象.属性名"
实体对象查询
查询所有信息
Employee是一个实体类select * from Employee 等价于from Employee
查询指定列名(投影查询)
注意:Employee对象必须要有构造方法public Employee(String empname, String job)
select new Employee (empname,job) from Employee
条件查询
简单条件查询
from Employee emp where emp.sex="男"
- 分页查询
Employee ee = new Employee(); // ee.setEmpname("杨%"); ee.setSalary(6000.0); // ee.setJob("神雕大侠"); Session session = HibernateSessionFactory.getSession(); StringBuffer buffer = new StringBuffer("from Employee where 1=1"); //拼接HQL if (ee.getEmpname() != null && ee.getEmpname().length() > 0) { buffer.append(" and empname like :empname"); } if (ee.getSalary() != null && ee.getSalary() > 0) { buffer.append(" and salary> :salary"); } if (ee.getJob() != null && ee.getJob().length() > 0) { buffer.append(" and job= :job"); } Query query=session.createQuery(buffer.toString()); query.setProperties(ee); //设置分页 query.setFirstResult(0); query.setMaxResults(5); List<Emp> list=query.list(); for (Emp e : list) { System.out.println(e.getEmpid() + "," + e.getEmpname() + "," + e.getGender() + "," + e.getJob() + "," + e.getSalary()); } HibernateSessionFactory.closeSession();
参数绑定机制
占位符 ? 替代具体参数
Session session=HibernateSessionFactory.getSession();String hql="from Emp where empname like ? and salary>? and job=?";Query query=session.createQuery(hql);//按顺序赋值query.setString(0, "杨过");query.setDouble(1, 5000);query.setString(2, "神雕大侠");List<Emp> list=query.list();//处理集合,关闭sessionHibernateSessionFactory.closeSession();
引用占位符 :param 替代具体参数
...Session session=HibernateSessionFactory.getSession(); String hql="from Emp where empname like :empname and salary>:salary and job=:job";Query query=session.createQuery(hql);//按名称赋值query.setString("empname", "杨过");query.setDouble("salary", 5000);query.setString("job", "神雕大侠");//不知道参数类型的情况下query.setParameter("sex","男");List<Emp> list=query.list();//处理集合,关闭sessionHibernateSessionFactory.closeSession();
对象查询
...Session session=HibernateSessionFactory.getSession(); String hql="from Emp where empname like :empname and salary>:salary and job=:job";Query query=session.createQuery(hql);Emp ee=new Emp();ee.setEmpname("杨%");ee.setSalary(5000.0);ee.setJob("神雕大侠");//这里是将信息存入了emp对象//将emp对象放入作为查询参数//这里也支持Map格式的对象query.setProperties(ee);List<Emp> list=query.list();//处理集合,关闭sessionHibernateSessionFactory.closeSession();
排序查询
在SQL中通过order by 子句和 asc、desc 实现排序操作。HQL也提供了这样的功能,用法和SQL类似,只是操作的不再是数据表的列名,而是实体对象的属性。//按员工年龄降序排序,多个条件用逗号**,** 分隔from Employee emp order by emp.age desc,emp.sex asc
聚合函数
HQL同样也支持聚合函数,如 sum、avg、count、max、min 等。例1:查询员工的平均年龄 select avg(emp.age) from Employee emp例2:统计员工个数(统计任意列都可以) select count(emp.age) from Employee emp
子查询
HQL中子查询必须被圆括号()包起来查询年龄大于平均年龄的员工from Employee emp where emp.age>(select avg(age) from Employee)
阅读全文
0 0
- Hibernate之HQL总结
- hibernate之hql总结
- Hibernate之HQL总结
- Hibernate之HQL总结
- Hibernate之HQL总结
- Hibernate之HQL总结
- Hibernate之HQL总结
- Hibernate之HQL总结
- Hibernate之HQL总结
- Hibernate之HQL 实例总结
- IT忍者神龟之Hibernate的HQL总结
- hibernate HQL总结
- Hibernate----hql总结
- hibernate------hql总结
- hibernate------hql总结
- hibernate--hql总结
- hibernate------HQL总结
- hibernate------hql总结
- Python-元类
- codeforces 271A(Beautiful Year) Java
- MongoDB详细介绍
- JDBC的业务逻辑流程和模块开发的原理分析
- Java基础的编程:9*9乘法表、质数的寻找、scanner的使用和迭代的基础
- Hibernate之HQL总结
- Android图片处理框架之Glide学习使用
- 一.windows下Erlang和RabbitMQ的安装
- 事件监听(addEventListener())及其移除(removeEventListener)
- 【接口测试】接口mock之基础知识
- 我人生中的第一篇博客
- Friend Circles
- jdk 安装和eclipse 安装
- Eclipse对html和js代码自动提示