-
获取独特的结果-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集合中存放符合查询条件的持久化对象.查看全部
-
初学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语句不同.查看全部
-
HQL数据查询 HQL和SQL都是数据查询语言. HQL(Hibernate Query Language),是Hibernate框架提供的查询语言. SQL(Structured Query Language),即结构化查询语言. HQL更接近SQL语句查询语法. HQL与SQL最重要的区别是,HQL是面向对象的查询语言,它查询的主体是映射配置的持久化类及其属性. SQL不是面向对象的查询语言.它查询的主体是数据库表. SQL能实现数据的查询功能,在HQL上几乎都能实现. 实际上,ORM框架中的Hibernate框架最终会把我们编写好的HQL语句解析成相应的SQL语句,来完成最终的数据查询操作.查看全部
-
ER图查看全部
-
查询单个对象查看全部
-
distinct消除重复元素查看全部
举报
0/150
提交
取消