Hibernate框架 五种查询方式

 2023-09-07 阅读 17 评论 0

摘要:OID查询 Hibernate根据对象OID(主键)进行检索 ①get() ②load() 对象导航检索 Hibernate根据一个已经查询到的对象,获得其关联的对象的一种查询方式 HQL检索(不支持 *代替所有列) Hibernate Query Language&#

OID查询

Hibernate根据对象OID(主键)进行检索
①get()
②load()


对象导航检索

Hibernate根据一个已经查询到的对象,获得其关联的对象的一种查询方式


HQL检索(不支持 *代替所有列)

Hibernate Query Language:一种面向对象的方式的查询语言,语法类似SQL,通过session.createQuery(hql语句)

①简单查询
from 类名 [别名]:查询该类对应表中所有数据
或 select 别名 from 类名 别名

②排序查询(默认升序)
from 类名 order by 属性名 排序方式
升序:asc 降序:desc

hbase条件查询语句,③条件查询(可使用占位符)
按位置绑定:from 类名 where 属性=? [and]
使用位置设置参数
按名称绑定:from 类名 where 属性= :名称 [and]
使用名称设置参数

④投影查询
查询对象的某个或某些属性
单个:select 别名.属性 from 类 别名 //list()返回List
多个:select 别名.属性,别名.属性 from 类 别名//list()返回List<Object[]>
若想将属性封装到对象中:select new 类名(属性名,属性名) from 类名//list()返回List<类>

⑤分页查询
使用方法:query.setFirstResult(int)和.setMaxResults(int)设置分页查询

⑥分组统计查询
select count(*) from 类名
可使用list()取索引为0,或uniqueResult()取唯一值
聚合函数:count()、avg()、max()、min()、sum()
分组:select 属性名,count() from 类名 group by 属性名 [Having count()>num]//list()返回List<Object[]>

⑦内连接多表查询
普通内连接:from 类名 别名 inner join 别名.属性名(该属性为外键绑定)//List<Object[]>
迫切内连接:inner join后添加fetch //通知hibernate 将另一个对象封装到该对象的所对应的引用属性中


QBC(推荐在条件转换查询时使用)

Query By Criteria:是一种更加面向对象化的查询方式,通过session.createCriteria(类.class)获取Criteria对象

hibernate in查询。①简单查询
criteria.list()

②排序查询
.addOrder(Order.asc(“属性名”)//升序
.addOrder(Order.desc(“属性名”)//降序

③分页
.setFirstResult()//设置开始索引
.setMaxResults()//设置显示数

④条件查询
.add(Restrictions.类型(“key”,“value”))
类型对应:= eq、> get、>= ge、< lt、<= le、<> ne、like、in、and、or
Ps:默认多条件为and,可使用.add(Restrictions.or(Restrictions.类型(“key”,“value”)))来使用or

⑤统计查询
.setProjection(Projections.类型)
类型对应:聚合函数及group by having

⑥使用DetachedCriteria(脱离session使用)离线
在Web层使用DetachedCriteria建立对象dc(通过DetachedCriteria.forClass(类.class)设置查询类型并获取对象)
根据业务逻辑判断所查询的条件,并使用dc.add(Restrictions.类型(“key”,“value”))设置条件
然后通过service层传递到dao层和session进行绑定:Criteria cr = dc.getExecutableCriteria(session)

SQL

hibernatetemplate多表查询、直接使用SQL语句传输到底层进行操做:
sqlQuery = session.createSQLQuery(“SQL”)

sqlQuery.list()默认返回List<Object[]>类型,
可使用sqlQuery.addEntity(类.class)将结果数据封装到对象中,即List<类>

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/2/14507.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息