4.Hibernate HQL查询1
2016-07-14 13:57
429 查看
什么是HQL?
HQL(Hibernate Query Language)是Hibernate查询语言、是一种面向对象的查询语言,可以理解继承、多态和关联之类的概念。
from子句
1.from cn.hibernate.Dept
cn.hibernate.Dept是全限定类名(包名加类名)。
2.from Dept
省略了Dept的包名
3.from Dept as dept
为出就化类Dept指派别名dept,可以在HQL语句中使用这个别名。
select子句
select子句用于选取对象和属性
1.select dept from Dept as dept
select后面跟的是别名dept
2.select dept.name from Dept as dept
select子句选取了一个属性name,也可以选取多个数据。这里是属性名,而不是getName()这个方法。
where子句
where子句用于表达式查询限制条件
1.from DistrictEntity wherename
= 'SALSE'
这条HQL语句用于查询名称部门SALSE的部门。在where子句中直接使用属性名。
2.from DistrictEntity as de where de.name
= 'SALES'
这条HQL语句用于查询名称部门SALSE的部门。在where条件中可以使用别名点属性名的方式来查询。
3.from DistrictEntity as de where de.name
is not null
HQL语句用于查询地址不为空的部门。
order by 子句
1.from DistrictEntity order by id asc
这条HQL语句会查询所有数据,查询完成后会按照升序进行排序。
2.from DistrictEntity order by id asc, name desc
会查询所有员工,先按照id进行排序,在按照姓名排序。
执行HQL语句
String sql = "from DistrictEntity";//声明sql语句
Query query = session.createQuery(sql);//创建Query对象
然后在通过Query对象的list()与iterator()查询。
查询语句参数
1.按照参数位置绑定,使用‘?’占位符
语法:from DistrictEntity de where de.id = ?
Query提供了绑定各种类型的参数和方法,如果参数为字符串,可调用setString()。该方法返回一个Query对象,
也就是说可以在该方法后面继续的使用其他的方法。有两个参数,第一个参数可以是int型,为第几个参数从零开始;第二个参数
为String类型,为要设置的值。
2.按照参数名称绑定,使用‘:’开头
语法:from DistrictEntity de where de.id = :id
与占位符相似,已setString()方法为例,第一个参数是String类型,里面写的是参数名称id;第二个参数设置值。
额外说一下另外两个方法:
1.setParameter():绑定任意类型的参数,程序会根据你传入的参数自动识别。
2.setProperties():绑定命名参数与一个对象的值属性,例如我的命名参数为name,这里就指向你绑定对象中一个name属性。这里要注意,命名参数与对象属性要保持一致。
总结:
1.HQL语言是面向对象的语言。
2.HQL中没有表和字段的概念,只有类、属性。
HQL(Hibernate Query Language)是Hibernate查询语言、是一种面向对象的查询语言,可以理解继承、多态和关联之类的概念。
from子句
1.from cn.hibernate.Dept
cn.hibernate.Dept是全限定类名(包名加类名)。
2.from Dept
省略了Dept的包名
3.from Dept as dept
为出就化类Dept指派别名dept,可以在HQL语句中使用这个别名。
select子句
select子句用于选取对象和属性
1.select dept from Dept as dept
select后面跟的是别名dept
2.select dept.name from Dept as dept
select子句选取了一个属性name,也可以选取多个数据。这里是属性名,而不是getName()这个方法。
where子句
where子句用于表达式查询限制条件
1.from DistrictEntity wherename
= 'SALSE'
这条HQL语句用于查询名称部门SALSE的部门。在where子句中直接使用属性名。
2.from DistrictEntity as de where de.name
= 'SALES'
这条HQL语句用于查询名称部门SALSE的部门。在where条件中可以使用别名点属性名的方式来查询。
3.from DistrictEntity as de where de.name
is not null
HQL语句用于查询地址不为空的部门。
order by 子句
1.from DistrictEntity order by id asc
这条HQL语句会查询所有数据,查询完成后会按照升序进行排序。
2.from DistrictEntity order by id asc, name desc
会查询所有员工,先按照id进行排序,在按照姓名排序。
执行HQL语句
String sql = "from DistrictEntity";//声明sql语句
Query query = session.createQuery(sql);//创建Query对象
然后在通过Query对象的list()与iterator()查询。
查询语句参数
1.按照参数位置绑定,使用‘?’占位符
语法:from DistrictEntity de where de.id = ?
Query提供了绑定各种类型的参数和方法,如果参数为字符串,可调用setString()。该方法返回一个Query对象,
也就是说可以在该方法后面继续的使用其他的方法。有两个参数,第一个参数可以是int型,为第几个参数从零开始;第二个参数
为String类型,为要设置的值。
2.按照参数名称绑定,使用‘:’开头
语法:from DistrictEntity de where de.id = :id
与占位符相似,已setString()方法为例,第一个参数是String类型,里面写的是参数名称id;第二个参数设置值。
额外说一下另外两个方法:
1.setParameter():绑定任意类型的参数,程序会根据你传入的参数自动识别。
2.setProperties():绑定命名参数与一个对象的值属性,例如我的命名参数为name,这里就指向你绑定对象中一个name属性。这里要注意,命名参数与对象属性要保持一致。
总结:
1.HQL语言是面向对象的语言。
2.HQL中没有表和字段的概念,只有类、属性。
相关文章推荐
- 基于 Red Hat 的发行版 Oracle Linux 正式发布Oracle Linux 7.1
- Oracle Containers for J2EE远程安全漏洞(CVE-2014-0413)
- Oracle 10g R2不能使用EM的问题
- 表空间操作
- PreparedStatement中in子句的处理
- VMware下RedHat4.8_64位安装Oracle 10g RAC--简略脚本
- oracle sql日期比较
- 基于 Red Hat 的发行版 Oracle Linux 正式发布Oracle Linux 7.1
- OS block size和Oracle block size,查找OS Blocksize的方法
- oracle中创建数据库和表空间的几点总结
- 数据库自动备份脚本
- oracle的nvl函数的使用介绍
- 解决oracle用户连接失败的解决方法
- oracle的一些tips技巧
- Oracle 下的开发日积月累
- Oracle存储过程之数据库中获取数据实例
- Windows下ORACLE 10g完全卸载的方法分析
- Oracle 函数大全[字符串函数,数学函数,日期函数]第1/4页
- ORACLE LATERAL-SQL-INJECTION 个人见解