`

hibernate的查询语法

阅读更多
DOM:Document Object Model
document.getElementById("id");
document.getElementByName("name");
document.getElementByTagName("tagName");

var tag=document.createElement("tagName");
appendChild();
removeChild();
parentNode
childNodes

one-to-many

T_Question

T_Choice
question_id

T_Image
question_id
choice_id

t_question_image  
question_id
image_id

用户,角色
t_user
t_role
用户角色表
t_user_role
user_id        primary key
role_id        primary key

多对多关系

一定要有一边需要配置inverse

如果两个对象都没有保存,有两种方式进行保存
1、cascade="save-update"
2、save 两次

一对一关系
eg. 用户  用户详情

Hibernate的查询分几种
HQL,QBC(QBE),SQL

HQL查询
HQL是基于面向对象的,里面没有表,也没有列,有类和属性
直接以from开头,表示全部选择
从Hibernate3.1可以执行修改和删除

from Emp

eg1.  带?参数查询
Session session = HibernateSessionFactory.getSession();
String hql="from Emp e where e.ename like ?";
Query query=session.createQuery(hql);
query.setString(0, "%"+"a"+"%");
List list=query.list();
System.out.println(list.size());
HibernateSessionFactory.closeSession();

eg.2 带:命名参数
Session session = HibernateSessionFactory.getSession();   
String hql="from Emp e where e.ename like :name";
Query query=session.createQuery(hql);
query.setString("name", "%a%");
List list=query.list();
System.out.println(list.size());
HibernateSessionFactory.closeSession();

eg3.in查询
Session session = HibernateSessionFactory.getSession();
String hql="from Emp e where e.empno in (:list)";
Query query=session.createQuery(hql);
query.setParameterList("list", new Long[]{1L,3L,5L});
List list=query.list();
System.out.println(list.size());
HibernateSessionFactory.closeSession();

eg4.连接查询
Session session = HibernateSessionFactory.getSession();
String hql = "from Emp e where e.dept.dname like ?";
Query query = session.createQuery(hql);
query.setString(0, "%RE%");
List list = query.list();
System.out.println(list.size());
HibernateSessionFactory.closeSession();

eg5. 笛卡尔积
Session session = HibernateSessionFactory.getSession();
String hql = "select e from Emp e,Dept";
Query query = session.createQuery(hql);
List list = query.list();
System.out.println(list.size());
HibernateSessionFactory.closeSession();

eg6. 带条件
Session session = HibernateSessionFactory.getSession();
String hql = "select e from Emp e,Dept d where e.dept=d";
Query query = session.createQuery(hql);
List list = query.list();
System.out.println(list.size());
HibernateSessionFactory.closeSession();

eg7. select 多个对象,会形成 List里面放Object数组,数组里面放对象
Session session = HibernateSessionFactory.getSession();
String hql = "select e,d from Emp e,Dept d where e.dept=d";
Query query = session.createQuery(hql);
List list = query.list();
System.out.println(list.size());
HibernateSessionFactory.closeSession();

eg8. select 一列,就会形成这一列类型的集合,不会生成Object数组
Session session = HibernateSessionFactory.getSession();
String hql = "select e.empno from Emp e,Dept d where e.dept=d";
Query query = session.createQuery(hql);
List list = query.list();
System.out.println(list.size());
HibernateSessionFactory.closeSession();

eg9. select多个值,会形成Object[]
Session session = HibernateSessionFactory.getSession();
String hql = "select e.empno,e.ename from Emp e,Dept d where e.dept=d";
Query query = session.createQuery(hql);
List list = query.list();
System.out.println(list.size());
HibernateSessionFactory.closeSession();

eg10.查询生成List里面放HashMap,key由as后面的字符串决定
Session session = HibernateSessionFactory.getSession();
String hql = "select new map(e.empno as id,e.ename as name) from Emp e";
Query query = session.createQuery(hql);
List list = query.list();
System.out.println(list.size());
HibernateSessionFactory.closeSession();

eg11.迫切左连接查询
Session session = HibernateSessionFactory.getSession();
String hql = "from Emp e left join fetch e.dept";
Query query = session.createQuery(hql);
List list = query.list();
System.out.println(list.size());
HibernateSessionFactory.closeSession();

eg12.分页查询
Session session = HibernateSessionFactory.getSession();
String hql = "from Emp ";
Query query = session.createQuery(hql);
query.setFirstResult(10);//从第几条开始,初始是0  (page-1)*pageSize;
query.setMaxResults(5);//取几条
List list = query.list();
System.out.println(list.size());
HibernateSessionFactory.closeSession();
分享到:
评论

相关推荐

    hibernate 查询语法

    hibernate 查询语法

    Hibernate hql查询语法总结

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

    hibernate必须包/教程/查询

    2. `hibernate查询.txt`:可能是对Hibernate查询语法和用法的文本说明,包括HQL、Criteria API和Native SQL的示例。 3. `hibernate必须包.zip`:这个文件可能包含了开发Hibernate项目所需的JAR包,包括Hibernate...

    Hibernate连表查询 Hibernate连表查询

    根据提供的文件信息,我们可以深入探讨Hibernate中的连表查询方法及其应用。下面将详细介绍与标题、描述及部分代码相关的几个核心知识点: ### Hibernate 连表查询基础 Hibernate 是一个开源的对象关系映射(ORM)...

    Hibernate 注释语法.chm

    Hibernate 注释语法的简单讲解,个人的学习总结笔记

    1、hibernate 简单语法1

    在本文中,我们将详细介绍 Hibernate 的简单语法,包括查询语言、参数绑定、结果集处理等方面的知识点。 查询语言 Hibernate 提供了两种查询语言:HQL(Hibernate Query Language)和 Criteria。其中,HQL 是一种...

    Hibernate查询语言HQL.PPT

    Hibernate 查询语言 HQL Hibernate 查询语言 HQL 是一种面向对象的查询语言,用于检索对象。它提供了灵活多样的查询机制,包括导航对象图、通过标识符检索、使用 HQL 检索对象、使用 Hibernate 条件 API 和使用本地...

    hibernate多表联合查询

    - 在Native SQL查询中,我们直接使用标准的SQL语法。 - 使用`createSQLQuery()`方法来创建一个SQL查询对象。 - 通过`addEntity()`方法将查询结果映射到自定义的`CustomerSummary`类。 #### 六、总结 通过以上两种...

    Hibernate查询语言(HQL) 语法参考

    Hibernate 查询语言(HQL)语法参考 HQL(Hibernate Query Language)是 Hibernate 框架中的一种强大的查询语言,它类似于 SQL 语句,但是它是完全面向对象的查询语言,可以理解继承、多态和关联等概念。 大小写...

    hibernate查询语句--HQL

    ### Hibernate 查询语句 -- HQL #### 概述 Hibernate 是一个开源的对象关系映射 (ORM) 框架,它允许开发人员将 Java 对象映射到数据库表中的记录,从而简化了数据访问逻辑。在 Hibernate 中,执行查询操作的主要...

    hibernate查询方法

    QueryOver是NHibernate(.NET版Hibernate)引入的一个高级查询API,但也可以在Java Hibernate中使用,它提供了更丰富的查询语法。虽然在Java中使用QueryOver不如使用Criteria API常见,但在某些场景下,QueryOver能...

    Hibernate的查询方式

    HQL是Hibernate特有的查询语言,它采用面向对象的语法结构,使开发者能够在不脱离对象模型的情况下进行数据库操作。与传统的SQL相比,HQL更侧重于对象的属性和关联,而非数据库的表和字段,这使得代码更易于理解和...

    hibernate里面的 两种查询

    HQL是Hibernate特有的查询语言,它的语法类似于SQL,但面向对象,可以直接操作持久化类和它们的属性。HQL提供了更高级别的抽象,使得开发者可以忽略数据库特定的语法细节。 - **优点**:HQL具有强大的功能,可以...

    Hibernate查询解决方案

    ### Hibernate查询解决方案详解 #### 一、概述 Hibernate 是一个开放源代码的 ORM(对象关系映射)框架,它提供了从 Java 类到数据库表的映射机制,以及数据的查询和获取方式。Hibernate 的核心功能之一是提供了...

    hibernate实现动态SQL查询

    本篇文章主要探讨如何利用Hibernate实现动态SQL查询,结合XML配置和FREEMARKER模板引擎来生成执行的SQL语句。 一、Hibernate简介 Hibernate作为一款强大的持久层框架,它简化了Java应用程序与数据库之间的交互。...

    HQL是hibernate自己的一套查询

    根据提供的标题、描述以及部分代码内容,我们可以了解到这段材料主要涉及的是Hibernate框架中的HQL(Hibernate Query Language)查询语言的使用。接下来将详细介绍HQL的相关知识点。 ### HQL概述 HQL是Hibernate...

    hibernateCriteria查询

    ### Hibernate Criteria 查询详解 #### 一、概述 Hibernate Criteria 查询是一种强大的对象化查询方式,它为开发者提供了一种灵活而直观的方式来构建复杂的查询逻辑。与传统的SQL查询相比,Criteria查询更加面向...

    hsql查询语法

    HSQL查询语法 ...HSQL查询语法提供了一种强大且灵活的查询语言,用于查询Hibernate应用程序中的数据。通过了解HSQL的基本语法和使用方法,我们可以更好地使用Hibernate来开发高效、可维护的数据应用程序。

    Hibernate分页查询原理解读

    此外,通过使用`Scrollable ResultSet`,Hibernate还可以进一步优化不支持特定分页语法的数据库的查询效率。总之,Hibernate为开发者提供了强大的分页查询功能,极大地简化了开发过程中的复杂性。

Global site tag (gtag.js) - Google Analytics