hibernate框架开发笔记 lesson3 HQL

原创 2016年08月30日 22:46:32

Hql 查询  (Hibernate Query language)

 在hibernate里做复杂查询 需要用到 hql语句

 面向对象查询语句 类名  属性名 

 基本原则 :

      sql           hql  

      表             类名

      字段       属性名


sql 和 hql 区别

hql * 不能单独使用 ,但可以组合使用 count(*)

hql 不能使用 join on

查询表的所有内容:

  Session session = HibernateUtils.getSession();

  String hql ="from Emp" ;

  Query query = session.createQuery(hql);

  List<Emp>lsit=query.list();

  HibernateUtils.closeSession()

 list 即为所查结果的集合


条件查询:

Session session = HibrenateUtils.getSession;

String hql ="from Emp where sex = ? and age >? and ename like ?";

Query query = session.createQuery(hql);

query.setString(0,"男");  给占位符赋值,从 0开始

query.setInteger(1,18);

query.setString(2,"%张%");

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

Hibernate.closeSession();


查询类的部分属性值

Session session = HibernateUtils.getSession();

String hql ="select ename, salary from Emp where sex = ? ";     ename ,salary为Emp类的属性

 Query query = session.createQuery(hql);

 query.setString(0,"男");

  List<Object [ ] >list=query.list()        部分属性不能封装成Emp对象,通过反射  list.get(0).getClass.getSimpleName()

  HibernateUtils.closeSession();


分组查询

Session session = HibernateUtils.getSession();

String hql = "select job ,count (empno), max(salary),sum(salary),avg(salary) from Emp group by job havingcout(empno)>=1 oder by count(empno) desc";

Query query = session.createQuery(hql);

List<Object [ ] >list = query.lsit();

HibernateUtils.closeSession();


表连接查询

Session session = HibernateUtils.getSession();

String hql="select d.dname count(e.empno),sum(e.salary) from Emp e join e.dept  d group by d.dname havingcount(e.empno)>=1 oder by count(emp) desc";     join 连接 emp类的外键属性 dept

Query query = session.createQuery(hql);

List<Object [ ] >list = query.lsit();

HibernateUtils.closeSession();


分页查询

query.setFirstResult(0);  (pageNo-1)*pageSize

query.setMaxResults(2); 每页显示数量 pageSize


命名hql查询

  在*.hbm.xml中 为hql语句起个名字 , 不用修改代码

   <query name=" findLikeByHql">

from Emp where ename like ? and  age> ?

  </query>

Session session = HibernateUtils.getSession();

    Query query = session.getNameQuery("findLikeByHql");

    query.setString(0,"%张%");

    query.setInteger(1,18);

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

    while(it.hasNext()){

    Emp emp = (Emp)it.next();

    }

    Hibernate.closeSession();

Criater 查询


    seesion.get(Emp.class ,1001); 根据主键直接查询

    编程 查询;不需要sql hql 将查询的条件用对象来封装


    Session session = HibernateUtils.getSession();

    Criteria c = session.createCriteria(Emp.class);


    Criterion condition1= Restrictions.like("ename","%张%");

    Criterion condition2=Restrictions.gt("age",18);

    Criterion condition3=Restrictions.eq("sex","男");


    c.add(condition1);

    c.add(condition2);

    c.add(condition3);

    c.addOrder(Order.desc("age"));


    List<Emp>list =c.list();

    Hibernate.closeSession();


版权声明:本文为博主原创文章,未经博主允许不得转载。

Hibernate框架笔记

Hibernate 课程内容: 1.   常见的O/R框架(了解) 2.   Hibernate基础配置(重点) 3.   ID生成策略(重点掌握auto) 4.   Hibernate ...
  • g_s007
  • g_s007
  • 2016年07月07日 15:39
  • 204

spring框架开发笔记 lesson3 AOP

本文来自中软开创myc老师上课笔记
  • xiedaimadejudy
  • xiedaimadejudy
  • 2016年09月13日 06:44
  • 186

hibernate hql 大全

Hibernate配备了一种非常强大的查询语言,这种语言看上去很像SQL。但是不要被语法结构 上的相似所迷惑,HQL是非常有意识的被设计为完全面向对象的查询,它可以理解如继承、多态 和关联之类的概念。...
  • rigger21
  • rigger21
  • 2007年08月09日 15:48
  • 9874

Hibernate-HQL基础

Hibernate-HQL基础 基本概述     Criteria查询对查询条件进行了面向对象封装,符合编程人员的思维方式,不过HQL(Hibernate Query Language)查...
  • q547550831
  • q547550831
  • 2016年02月14日 00:10
  • 2460

【Hibernate九】HQL之多表查询(一对多和多对多)

一、一对多 以班级Classes和学生Student为例: 回忆sql语句: //内链接,两种方式效果一样,查询的是两边都有的数据 SELECT c.*,s.* FROM cl...
  • damogu_arthur
  • damogu_arthur
  • 2015年07月17日 11:18
  • 25550

Hibernate中使用HQL进行查询操作

注意:HQL语言,是基于对象进行查询的,不是基于数据库的表。 1、基本的HQL查询 1.1 使用HQL查询的一般步骤 public void test01() { Session sessio...
  • zbw18297786698
  • zbw18297786698
  • 2016年07月22日 15:27
  • 13072

Hibernate中的HQL的基本常用小例子,单表查询与多表查询

Hibernate中的HQL的基本常用小例子,单表查询与多表查询 本文章实现HQL的以下功能: /** * hql语法: * 1)单表查询 * 1.1 全表查询 * 1...
  • starjuly
  • starjuly
  • 2016年08月26日 00:26
  • 6515

Hibernate HQL查询 插入 更新

1、实体查询: 有关实体查询技术,其实我们在先前已经有多次涉及,比如下面的例子: String hql=”from User user ”; List list=session.CreateQu...
  • duck_arrow
  • duck_arrow
  • 2015年01月26日 15:02
  • 734

【hibernate】HQL的种种实例

摘自:尚学堂-马士兵的hibernate教学视频 前期准备: Model层: Category实体类 package model; import javax.persistence.Entity; ...
  • u010513756
  • u010513756
  • 2015年11月02日 16:44
  • 12733

J2EE进阶(十七)Hibernate中常用的HQL查询方法(getHibernateTemplate())

J2EE进阶(十七)Hibernate中常用的HQL查询方法(getHibernateTemplate())  当我们使用Hibernate进行数据的CRUD操作时,利用模版进行操作不失为一种方法。今...
  • sunhuaqiang1
  • sunhuaqiang1
  • 2016年12月27日 20:06
  • 42719
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:hibernate框架开发笔记 lesson3 HQL
举报原因:
原因补充:

(最多只允许输入30个字)