HQL数据查询
来源:互联网 发布:蜂窝移动数据已关闭 编辑:程序博客网 时间:2024/06/04 21:52
HQL全称Hibernate Query Language顾名思义就可以知道HQL的用途就是建立在Hibernate框架的基础上的查询语句;
HQL是面向对象的查询语句,HQL是映射配置的持久化类及其属性,而SQL则是数据库表;
HQL语句的形式;
select...from...where...group by...having...order by...看上去形式跟SQL,所差无几,但重点在于红色字体的from字句,正是它使得HQL更加灵活简便;
使用HQL的注意细节:HQL是面向对象的查询语言,对关键字不区分大小写(一般小写),但是对Java类及其属性的大小写敏感的;
使用HQL要依靠Query接口:org.hibernate.Query接口;
1.Query接口定义有执行查询的方法;
2.Query接口支持方法链编程风格,使得程序代码更为简洁(使用最多的场景就是查询参数的动态设置,特别是多参数);
Query实例的创建:
1.Session的createQuery()方法创建;
2.createQuery方法包含一个HQL语句参数,createQuery(hql);
Query执行查询:
1.Query接口的list()方法执行HQL查询;
2.list()方法返回结果的数据类型为java.util.List,List集合中存放符合查询条件的持久化对象
from子句中持久化类的引用:
1.不需要引入持久化类的全限定名(package.className),而是直接引入类名(from className)即可查询,因为hql有auto-import
2.可为类名起别名from className (as) otherName ,这点跟sql是相类似的
查询结果返回形式
1.select子句中如果没有指定返回形式,则默认是list<Object[]>,Object[]数组的数据顺序为select所需数据的顺序(select多个元素时使用),如果只select一个元素,则返回list<Object>
2.可使用list作为返回结果,select中用new list指定,如:select new list(c.id,c.name) from Class c;
3.同理,也可使用map等,这个根据自己习惯而定
4.注意一点,也是很容易忽略的一点,如果是返回自定义类,那么自定义了构造器之后,一定还要再写一个无参构造器,这是因为当在其它地方也用到这个表时,hql是默认调用无参默认构造函数,如果没有,会运行出错
5.跟sql一样,也可使用distinct来去掉结果中重复的数据
6.query.uniqueResult()方法可以返回单个对象,而不再是List,返回对象后要进行强制类型转换
限制语句---where
1.因大部分限制的运算符都与SQL相同,所以这里只分析与SQL有差异的运算符
2.在HQL中是允许使用 = , < >(不等于语句的),如:where c.name = null 或where c.name <> null,Hibernate会将其转为 is null 或 is not null
3.HQL 允许使用is (not) empty ,与之对应的是SQL的(not) exists
4.HQL的member of对应SQL的in
- HQL数据查询基础
- HQL数据查询基础
- HQL数据查询
- HQL数据查询基础
- Hql数据查询基础
- HQL数据查询
- HQL数据查询基础
- HQL数据查询
- HQL数据查询基础
- HQL查询多表数据
- 慕课网 HQL数据查询基础
- HQL数据查询基础笔记
- 【SSH】使用HQL查询数据
- Hibernate HQL 查询Set数据
- Hive HQL数据操作、数据查询
- HQL和SQL查询数据的区别
- 自己学习心得:HQL数据查询基础
- Hibernate——HQL数据查询
- 创建设备节点问题
- 第二节点习题
- codeforces 96A Football
- 如何使用spring的jdbcTemplate的in
- 【一图看懂】计算机视觉识别简史:从 AlexNet、ResNet 到 Mask RCNN
- HQL数据查询
- 深度学习框架:TensorFlow(人生若只如初见)
- Self Dividing Numbers
- 解决wireshark检测不到网卡的问题(Windows)
- struts2使用验证码
- SPFA算法
- linux C 进程 创建进程 详解
- 哈希表简介
- golang操作redis出现的错误解决