为了账号安全,请及时绑定邮箱和手机立即绑定

HQL数据查询基础

难度中级
时长 1小时41分
学习人数
综合评分9.77
301人评价 查看评价
9.9 内容实用
9.8 简洁易懂
9.6 逻辑清晰
  • 获取独特的结果-distinct关键字 distinct关键字 1.使用distinct关键字去除查询结果中的重复元素. 若"select sex from Person",那么查询出来的结果就会重复. 若用distinct关键字即"select distinct sex from Person"则查询出来的结果会消除重复.
    查看全部
  • 以自定义类型返回选择的属性 1.持久化类中要定义对应的构造器. 2.select子句中调用定义的构造器. public class Person{ private String name; private String sex; private int age; public Person(String name,int age){ this.name=name; this.age=age; } public Person(){} 生成get/set方法; } Query query=session.createQuery("select new Person(name,age) from Person"); List<Person> list=query.list(); for(Person p:list){ System.out.println("name"+p.getName()+"age"+p.getAge()); } 直接用"from Person"的话list()方法则直接返回泛型为Person的集合即List<Person>,list()方法调用Person类的无参构造方法.如果一个类中添加了有参的构造方法,那么系统就不会为我们添加无参的构造方法.
    查看全部
  • 选择-select子句 1.以Object[]形式返回选择的属性 2.以List形式返回选择的属性 3.以map形式返回选择的属性 4.以自定义类型返回选择的属性 5.获取独特的结果-distinct关键字 使用select可以指定要获取哪些字段. 以Object[]形式返回选择的属性 Query query=session.createQuery("select name,age from Person"); List<Object[]> list=query.list(); for(Object[] obj:list){ System.out.println("name"+obj[0]+"age"+obj[1]); } 如果select子句中只指定选择一个属性,返回的数据类型就不会是对象数组,而是对象.所以要改成List<Object> list=query.list(); 循环遍历那里也需要改. 以List形式返回选择的属性 Query query=session.createQuery("select new list(name,age) from Person"); List<List> lists=query.list();//返回的是泛型为List的List集合. for(List list:lists){ System.out.println("name"+list.get[0]+"age"+list.get[1]); } 以map形式返回选择的属性 Query query=session.createQuery("select new map(name,age) from Person"); List<Map> maps=query.list(); for(Map m:maps){ System.out.println("name"+m.get("0")+"age"+m.get("1")); } 用Map的形式返回结果,要注意Map集的get()方法中的参数是以字符串形式的序号. 我们可以根据自己擅长的方式来挑选通过select子句查询数据其数据结果的返回形式.
    查看全部
  • HQL同样用as关键字定义别名.同时as也可以省略. 在实际的应用中,建议别名与持久化类名相同,以全小写的形式.也可以以单字母的形式命名.
    查看全部
  • form子句中不需要引入持久化类的全限定名,直接引入类名即可.全限定名就是类的全称. 在JAVA代码中,如果我们要使用一个类的时候,必须指名这个类的全限定名,JAVA环境才知道去哪里获取这个类.而HQL语句中之所以可以省略是因为auto-import(自动引入)缺省情况,在Query接口的list()方法解析HQL语句的时候,会根据映射配置信息,自动完成持久化类的导入,这样的使用方式更方便.
    查看全部
  • from子句是HQL语句的最简形式 from指定了HQL语句查询主体-持久化类及其属性 当编写的HQL中只有from子句,默认Hibernate框架会查询该持久化类的所有实例以及属性. from也可以实现一个与其他表有关联的表的查询.(不是多表查询,属于单表) 即A类中存在一个B类类型的变量,并且用到此B类对象,那么通过from直接获取A类的持久化对象时,同时也能获取到此A类持久化对象所包含的B类的持久化对象信息. 因为Hibernate在查询到A类持久化对象的时候后,会立刻根据外键查询此A类持久化对象所包含的B类的持久化对象信息. (如果用到此B类的持久化对象的话,Hibernate才会立刻根据外键去查询此A类持久化对象所包含的B类的持久化对象信息,如果没有用到,那么Hibernate不会根据外键去查询此B类的持久化对象信息)
    查看全部
  • 在配置文档中设置了show_sql,则会在控制台里打印出sql语句.此sql语句就是list()方法解析HQL语句之后的sql语句. HQL语句中可以直接使用"from 类名"就可以查询到此类对应数据库表中的所有信息.不需要像sql那样"select*from 表名",直接"form 类名"即可. list()方法返回的是HQL语句所查询的类的持久化对象的集合.所以一般定义一个带泛型的List集合来存储. Query query=session.createQuery("from Student"); List<Student> list=query.list(); for(List l:list){ System.out.println(l); } 注意:HQL是面向对象的查询,查询的是类,不像sql一样,直接查询表.因此在from 后面加的是类名(注意大小写).list()方法会根据查询的类名然后去映射文件中找到相应的数据库表,此时便把HQL语句解析成sql语句.再查询到相应的记录,最后返回记录的持久化对象的集合.
    查看全部
  • 查一个 返回Object对象 而不是Object[]数组
    查看全部
  • 执行HQL查询之前的准备工作: 1.创建Query接口的实例 2.通过list()方法执行查询 org.hibernate.Query接口 在Query接口中定义有执行查询的方法(list()方法),该方法完成HQL语句的解析和执行过程,并返回查询的结果. SQL语句在我们代码中,如果没有JDBC接口,它是一个普通的字符串变量,HQL语句也一样,代码中编写好的HQL语句也只是一个普通的字符串变量,而Query接口就会根据配置映射信息,把HQL查询语句解析成相应的SQL语句,来执行数据库的查询操作. Query接口支持方法链编程风格,使程序代码更加简洁,方法链编程就是调用方法后,返回的方法结果还是调用这个方法的对象.我们可以调用方法后再调用该对象的其他方法. 执行HQL语句的步骤: 1.创建Query实例对象的方法. 通过Session的createQuery()方法创建Query实例.createQuery方法包含一个HQL语句参数,createQuery(hql),这个参数就是要执行查询的HQL查询语句. 2.当创建完Query实例之后,就要执行HQL语句.通过Query接口的list()方法执行HQL查询.list()方法返回一个List集合,List集合中存放符合查询条件的持久化对象.
    查看全部
    0 采集 收起 来源:Query接口简介

    2016-01-25

  • 初学HQL要注意的问题: 1.HQL是面向对象的查询语言,对JAVA类与属性大小写敏感,即对查询的类及其属性名区分大小写,SQL查询的主体是数据库表及其字段,对查询的字段名大小写是不敏感的. 2.HQL对关键字不区分大小写.但是美观上,习惯把HQL关键字写成小写.(SQL关键字也不区分大小写,但SQL规范是把关键字写成大写) 3.HQL和SQL在形式上非常相似,在使用上HQL非常容易与SQL混淆.在本质上两者是不一样的.
    查看全部
  • HQL语句形式的组成 select子句:用来指定查询结果中的对象和属性,并指定以何种数据类型来返回.它的位置在HQL语句中的最前面. form子句:用它来指定HQL语句查询的目标(即映射文档的持久化类及其属性) where子句:是一个逻辑表达式,用来设置查询的条件,限制查询结果的范围. group by子句:是一个分组查询子句. having子句:对分组查询进行限制条件的设置. order by子句:用来指定查询结果中的实际对象的排序. HQL语句的形式与SQL语句的形式非常相似. form子句在HQL语句中是不可或缺的组成部分,一个最简单的HQL语句,只需要一个form子句就可以成立了.其他子句都可以省略.这点与SQL语句不同.
    查看全部
    0 采集 收起 来源:HQL语句形式

    2016-01-25

  • HQL数据查询 HQL和SQL都是数据查询语言. HQL(Hibernate Query Language),是Hibernate框架提供的查询语言. SQL(Structured Query Language),即结构化查询语言. HQL更接近SQL语句查询语法. HQL与SQL最重要的区别是,HQL是面向对象的查询语言,它查询的主体是映射配置的持久化类及其属性. SQL不是面向对象的查询语言.它查询的主体是数据库表. SQL能实现数据的查询功能,在HQL上几乎都能实现. 实际上,ORM框架中的Hibernate框架最终会把我们编写好的HQL语句解析成相应的SQL语句,来完成最终的数据查询操作.
    查看全部
    0 采集 收起 来源:HQL定义

    2016-01-25

  • ER图
    查看全部
  • 查询单个对象
    查看全部
    0 采集 收起 来源:查询单个对象

    2016-01-17

  • distinct消除重复元素
    查看全部

举报

0/150
提交
取消
课程须知
本课程是Hibernate进阶课程,需要小伙伴们了解Hibernate映射配置知识点,对这方面内容不了解的小伙伴们可以先去《 Hibernate初探之单表映射》进修一下~~
老师告诉你能学到什么?
1、什么是HQL,以及HQL的语句形式。 2、在Hibernate框架中如何执行HQL查询。 3、如何编写出正确的HQL查询语句,从数据库检索到我们想要的数据。

微信扫码,参与3人拼团

意见反馈 帮助中心 APP下载
官方微信
友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!