`

Hibernate学习之HQL详解2

阅读更多

uniqueResult方法
如果我们检索一个对象,明确知道最多只有一个对象 ,则建议使用该方法:
具体用法如下:
Student s=(Student) session.createQuery("from Student where sid='20050003'").uniqueResult();
System.out.println(s.getSname());

distinct的用法
过滤重复的记录
//比如,显示所有学生的性别和年龄.
List list=session.createQuery("select distinct sage,ssex from Student").list();
for(int i=0;i<list.size();i++){
    Object []  objs=(Object[]) list.get(i);
    System.out.println(objs[0].toString()+" "+objs[1].toString());
}

between and..
List list=session.createQuery("select distinct sage,ssex,sname from Student where sage between 20 and 22").list();
for(int i=0;i<list.size();i++){
    Object []  objs=(Object[]) list.get(i);
    System.out.println(objs[0].toString()+" "+objs[1].toString()+objs[2].toString());
}

in /not in
//查询计算机系和外语系的学生信息          
List<Student> list=session.createQuery("from Student where sdept in ('计算机系','外语系')").list();
//取出1. for 增强
for(Student s:list){
    System.out.println(s.getSname()+" "+s.getSaddress()+" "+s.getSdept());
}

group by使用
//显示各个系的学生的平均年龄
List<Object[]> list=session.createQuery("select avg(sage),sdept from  Student group by sdept").list();
//取出1. for 增强
for(Object[] obj:list){
    System.out.println(obj[0].toString()+" "+obj[1].toString());
}

having的使用
//1.对分组查询后的结果,进行筛选:比如请显示人数大于3的系名称
//a. 查询各个系分别有多少学生.           
List<Object[]> list=session.createQuery("select count(*) as c1,sdept from  Student group by sdept having count(*)>3").list();
//取出1. for 增强
for(Object[] obj:list){
    System.out.println(obj[0].toString()+" "+obj[1].toString());
}

查询计算机系共多少人?->如果我们返回的是一列数据
//这时我们的取法是直接取出list->object 而不是 list->Object[]
List<Object[]> list=session.
createQuery("select sage from  Student where sdept='计算机系'").list();
//取出1. for 增强
for(Object obj:list){
    System.out.println(obj.toString());
}

查询选修11号课程的最高分和最低分.
List<Object[]> list=session.createQuery("select 11,max(grade),min(grade) from Studcourse where course .cid=11").list();
//取出1. for 增强
for(Object[] obj:list){
    System.out.println(obj[0].toString()+" max="+obj[1].toString()+" min="+obj[2].toString());
}

显示各科考试不及格学生的名字(Student-student),科目(Course-course)和分数(Studcourse-studcourse)
List<Object[]> list=session.
createQuery("select student.sname,course.cname,grade from Studcourse where grade>=60").list();
//取出1. for 增强
for(Object[] obj:list){
    System.out.println(obj[0].toString()+" "+obj[1].toString()+" "+obj[2].toString());
}

计算各个科目不及格的学生数量.
List<Object[]> list=session.createQuery("select count(*),student .sdept from Studcourse where grade<60 group by student .sdept").list();
//取出1. for 增强
for(Object[] obj:list){
    System.out.println(obj[0].toString()+" "+obj[1].toString());
}

Query q=session.createQuery(hql);
q.setFirstResult (从第几条取//从0开始计算);
q.setMaxResult (取出几条);
请按照学生的年龄从小->大,取出第3到第5个学生
List<Student> list=session.createQuery("from Student  order by sage").setFirstResult(2).setMaxResults(3).list();
for(Student s: list){
    System.out.println(s.getSname()+" "+s.getSage());
}

分享到:
评论

相关推荐

    Hibernate HQL详解.docx

    HQL通过new的方式可以返回一个新的实体类,比如说上面通过new User(id,name)方式将id,name返回给User,要求User必须包含一个相对应的构造函数,否则会抛出异常,同时我们还有应该给User指定一个默认的构造函数,否则...

    HQL详解

    **HQL详解** Hibernate Query Language(HQL)是Hibernate框架中的对象关系映射查询语言,它允许开发者以面向对象的方式书写查询,而无需关心底层数据库的SQL语法。HQL是SQL的一个面向对象的版本,提供了更为简洁且...

    Hibernate hql查询语法总结

    《Hibernate HQL查询语法详解》 Hibernate,作为Java领域中广泛应用的对象关系映射(ORM)框架,极大地简化了数据库操作。其内置的HQL(Hibernate Query Language)是一种面向对象的查询语言,它允许开发者以类和...

    HQL 详解 HQL查询

    Criteria查询对查询条件进行了面向对象封装,符合编程人员的思维方式,不过HQL(Hibernate Query Lanaguage)查询提供了更加丰富的和灵活的查询特性,因此Hibernate将HQL查询方式立为官方推荐的标准查询方式,HQL查询...

    Hibernate连接Mycat例子详解

    "Hibernate 连接Mycat例子详解_正能量_20150507.docx"文档很可能包含了整个示例的详细步骤,包括项目构建、Mycat配置、Hibernate配置、实体类创建、DAO层接口及实现、以及如何运行和测试应用。这份文档会指导开发者...

    HibernateHql综合测试小程序

    总的来说,"HibernateHql综合测试小程序"是一个实用的学习和调试工具,它可以帮助开发者熟悉并精通HQL的语法和用法。通过实际操作和测试,开发者可以更深刻地理解Hibernate的查询机制,提升开发效率,为项目开发打下...

    Hibernate的详解

    **Hibernate详解** Hibernate是一款强大的Java持久化框架,它简化了数据库与Java对象之间的交互,使得开发者无需关注SQL的编写,可以更加专注于业务逻辑。本文将深入探讨Hibernate的核心概念、主要功能以及如何在...

    Hql详解[文].pdf

    - Hibernate提供`setFirstResult(int firstResult)`和`setMaxResults(int maxResults)`方法进行分页,如`Query query = session.createQuery(hql).setFirstResult(1).setMaxResults(2);` 5. **聚集函数** - Hql...

    Hibernate学习笔记和资料

    hibernate概述,hibernate入门Demo,hibernate配置文件详解(全局配置,实体类映射配置),配置实体规则,核心API详解(Configuration,sessionFactory,session,Transaction),hibernate中的对象状态以及刷新能缓存机制 ...

    hibernate--5.Hibernate配置文件详解-2

    标题"hibernate--5.Hibernate配置文件详解-2"暗示我们将继续上一节的内容,进一步深入理解Hibernate配置文件的各个方面。通常,Hibernate的配置文件以`hibernate.cfg.xml`的形式存在,它是项目初始化和连接数据库的...

    hibernate包详解+hibernatePPT

    **hibernate包详解** Hibernate 是一款开源的对象关系映射(ORM)框架,它为Java开发者提供了一种在关系数据库和面向对象编程之间架起桥梁的解决方案。通过使用Hibernate,开发人员可以避免直接编写SQL语句,而是用...

    hibernate多表查询详解

    **hibernate多表查询详解** 在Java的持久化框架中,Hibernate是一个广泛使用的ORM(对象关系映射)工具,它允许开发者用面向对象的方式来处理数据库操作。在实际的业务场景中,数据往往不是孤立存在的,而是存在于...

    Hibernate 中文api 等学习资料

    描述中的"hibernate orm框架api中文文档,学习资料,框架详解资料"进一步明确了这些资源的性质,即它们是关于Hibernate ORM框架的API文档、学习教程以及框架的详细解释,都是中文版本,方便中文读者学习。...

    hibernate中文开发手册详解

    《Hibernate中文开发手册详解》提供了全面的Hibernate学习资源,无论你是初学者还是有经验的开发者,都能从中找到解答疑惑的答案。通过深入理解并熟练运用Hibernate,你将在Java开发中更加游刃有余,实现高效的数据...

    hibernate查询语言--HQL

    以上就是关于Hibernate查询语言HQL的详解,包括了从简单属性查询到实体对象查询,再到条件查询、原生SQL查询和外置命名查询的使用。通过学习和实践,开发者可以更加熟练地运用Hibernate进行数据库操作。

    hibernate-mapping参数详解

    在深入探讨`hibernate-mapping`参数之前,我们先理解一下Hibernate的核心概念。Hibernate是一个开源的对象关系映射(ORM)框架,它允许开发者使用面向对象的方式来操作数据库。`hibernate-mapping`是Hibernate配置...

    Hibernate技术详解

    Hibernate技术详解 ,为初学者了解hql提供帮助

    Hibernate连表查询 Hibernate连表查询

    Hibernate连表查询 Hibernate连表查询

Global site tag (gtag.js) - Google Analytics