HQL查询

1、概述

104952_P6yp_2320342.jpeg

注:本地SQL查询结果不再是结果集,而是持久化对象的集合,可以对结果进行面向对象编程

 114428_XO9f_2320342.jpeg

114508_zGy0_2320342.png

 2、Query接口

114704_9THd_2320342.png

     1)实体查询

114850_6LY0_2320342.jpeg

 115043_ogBg_2320342.png

115139_A0nx_2320342.png

     2)获取返回结果

115420_TDZE_2320342.png

115511_p6Ve_2320342.png

115604_lOVK_2320342.png

     3)list与iterate的区别

115834_fw2b_2320342.jpeg

 134330_QjUs_2320342.png

3、属性查询

 134557_woRB_2320342.png

 134821_9QB0_2320342.png

 135553_sVYo_2320342.jpeg

 4、参数绑定

140300_4pa7_2320342.jpeg

 140616_OHlk_2320342.png

命名参数优点:可读性强。不依赖顺序。

 141119_ekA4_2320342.jpeg

141544_IJxE_2320342.jpeg

 141854_Th69_2320342.png

142450_SNky_2320342.png

 143014_Kepx_2320342.png

143117_bJKm_2320342.jpg

143426_5Uqi_2320342.jpeg

 144105_oBIn_2320342.jpeg

 144441_nwk7_2320342.jpeg

5、排序

 144709_8C1P_2320342.png

6、统计函数

144935_p5ak_2320342.png

145107_CsR2_2320342.png

 7、分组

145354_y2ab_2320342.png

145644_lEnu_2320342.png

 8、分页

150159_GAwI_2320342.png

150300_UU0g_2320342.png

150410_5d3K_2320342.png

150525_KdPB_2320342.png

 9、子查询

150957_o9J3_2320342.png

151502_OIdK_2320342.png

 152623_h5ah_2320342.png

152700_LCLV_2320342.png修改关键字为any即可

10、连接查询

153404_kaz7_2320342.png

153600_bJaB_2320342.jpeg

 160229_1CK2_2320342.jpeg

160325_zf9f_2320342.png

 160707_ZOXW_2320342.png

160906_YKhZ_2320342.png

161002_STPB_2320342.png

161130_fHt2_2320342.png

161252_CflE_2320342.png

 162001_10O3_2320342.jpeg

162632_HK4e_2320342.png

162921_TMIt_2320342.png

163026_gbIZ_2320342.png

 163429_W093_2320342.png

 172444_ZpAJ_2320342.png

 11、检索策略

173209_YM1Q_2320342.png

173426_YNcT_2320342.png

173814_DaDy_2320342.png

 174041_lrWT_2320342.png

12、类级别的检索策略

174818_J6gH_2320342.jpeg

 175122_jgKl_2320342.png

175420_gsM9_2320342.jpeg

 13、一对多关联检索策略

093204_ZaG8_2320342.jpeg

093443_XOgT_2320342.jpeg

 093935_IxUW_2320342.jpeg

 100015_jixy_2320342.jpeg

 100528_EkEE_2320342.jpeg

 100949_h93b_2320342.jpeg

 14、批量检索(batch-size)

105051_AXhU_2320342.png

105655_xt0U_2320342.png

注:默认值为1,合理取值在2-10之间。

 15、fetch的作用

作用:加载关联对象时查询语句的形式;加载关联对象的时机(立即/延迟)

110524_x3Cv_2320342.png

 110849_CFgh_2320342.jpeg

 111600_EV7T_2320342.jpeg

112018_1Tk7_2320342.jpeg

 112132_c1vR_2320342.png

16、小结

112500_zdED_2320342.png

112834_jp3T_2320342.png

注:HQL语言独立于数据库,不同数据库的SQL语言会有一些差别,而HQL语言只有一种,在hibernate项目中通过方言的设置,就可以将HQL语言转化为相应的SQL语言。

 114313_nECI_2320342.png

 

转载于:https://my.oschina.net/u/2320342/blog/406716

### HQL 查询中使用日期函数获取 7 天前的数据 HQL(Hibernate Query Language)支持多种内置的日期函数,这些函数可以帮助我们轻松地进行日期运算和过滤。下面详细介绍如何通过 HQL 实现查询 7 天前的数据。 #### 使用 `current_date()` 函数 在 HQL 中,`current_date()` 返回当前系统的日期部分(不包含时间)。我们可以结合此函数和其他日期操作符来构建所需的查询逻辑。 #### 构建查询语句 假设有一个实体类 `MyEntity`,其属性之一为 `eventDate` 表示事件发生的时间戳字段。为了检索发生在过去 7 天内的所有记录,可以编写如下 HQL 查询: ```java String hql = "FROM MyEntity WHERE eventDate >= :sevenDaysAgo"; Query query = session.createQuery(hql); Calendar cal = Calendar.getInstance(); cal.add(Calendar.DAY_OF_YEAR, -7); // 计算7天前的日期 query.setParameter("sevenDaysAgo", cal.getTime()); List<MyEntity> results = query.list(); ``` 在此代码片段中,首先创建了一个基于 Hibernate Session 对象的标准 HQL 查询对象;接着实例化一个 Java `Calendar` 类型的对象,并调用它的方法设置成今天的日期再向前推移 7 整日得到目标起始时刻作为参数绑定到占位符 ":sevenDaysAgo" 上面去完成最终动态SQL组装过程[^1]。 另外一种更为简洁的方式则是直接利用 HQL 提供的一些高级特性比如内嵌表达式来进行同样的事情而无需额外引入外部变量计算辅助: ```java String hql = "FROM MyEntity WHERE eventDate >= (CURRENT_DATE - INTERVAL '7' DAY)"; Query query = session.createQuery(hql); List<MyEntity> results = query.list(); ``` 这种形式下完全依赖于数据库本身对于标准 SQL 片段的支持程度来做相应的解析工作从而达到相同的效果[^2]。 需要注意的是并非所有的底层 RDBMS 都能很好地兼容上述第二种写法里的特殊语法结构所以实际开发过程中还是推荐采用第一种更加通用可靠的解决方案除非确定所使用的具体产品版本确实已经具备良好支持能力才可以考虑后者简化版做法[^3]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值