HQL查询

声明
Query query  = session.createQuery(hql);
查询
ListIterator
List<> list = query.list();Iterator<> itor = list.iterator();
泛型类型为hql中绑定的实体类型(来自from)泛型类型为和list相同的类型
从数据库中查询并一次性全部取回数据从数据库中查询并取回全部主键指针,然后根据指针在缓存中是否存在,如果不存在,则继续从数据库中查找并返回
适合缓存中无数据的时候适合缓存中存在需要查询到数据的时候
参数查询的两种方法
  1. 按参数位置查询(占位符?,填充参数下标,下标从0开始)
String hql = "from Books books where books.title like ?";
Query query = session.createQuery(hql);
query.setString(0,"English");
List<Books> list = query.list();
  1. 按参数名字查询
String hql = "from Books books where books.title=:bookTitle";
Query query = session.createQuery(hql);
query.setString(bookTitle,"English");
List<Books> list = query.list();
分布式微服务企业级系统是一个基于Spring、SpringMVC、MyBatis和Dubbo等技术的分布式敏捷开发系统架构。该系统采用微服务架构和模块化设计,提供整套公共微服务模块,包括集中权限管理(支持单点登录)、内容管理、支付中心、用户管理(支持第三方登录)、微信平台、存储系统、配置中心、日志分析、任务和通知等功能。系统支持服务治理、监控和追踪,确保高可用性和可扩展性,适用于中小型企业的J2EE企业级开发解决方案。 该系统使用Java作为主要编程语言,结合Spring框架实现依赖注入和事务管理,SpringMVC处理Web请求,MyBatis进行数据持久化操作,Dubbo实现分布式服务调用。架构模式包括微服务架构、分布式系统架构和模块化架构,设计模式应用了单例模式、工厂模式和观察者模式,以提高代码复用性和系统稳定性。 应用场景广泛,可用于企业信息化管理、电子商务平台、社交应用开发等领域,帮助开发者快速构建高效、安全的分布式系统。本资源包含完整的源码和详细论文,适合计算机科学或软件工程专业的毕业设计参考,提供实践案例和技术文档,助力学生和开发者深入理解微服务架构和分布式系统实现。 【版权说明】源码来源于网络,遵循原项目开源协议。付费内容为本人原创论文,包含技术分析和实现思路。仅供学习交流使用。
### HQL 查询中使用日期函数获取 7 天前的数据 HQLHibernate 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、付费专栏及课程。

余额充值