我们现在的框架是JSF+Spring+Hibernate.
public List delCustomerLastTwelveMonth() {
List a = (List) new java.util.ArrayList();
Calendar c = Calendar.getInstance();
for (int i = 0; i < 12; i++) {
c.add(Calendar.MONTH, 0);
Date after = c.getTime();
c.add(Calendar.MONTH, -1);
Date before = c.getTime();
int number = doSomethingAboutDDate(before, after);
//调用函数doSomethingAboutDDate
a.add(number);
}
return a;
}
//实现一个月删除的用户数,调用此函数后可以用循环实现12个月
private int doSomethingAboutDDate(Date startdate, Date enddate) {
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
String hql = " from TbDelCustomer u where" + " u.DDelDate > '"
+ dateFormat.format(startdate) + "' and u.DDelDate < '"
+ dateFormat.format(enddate) + "' ";
List users = this.getHibernateTemplate().find(hql);
return users.size();
}
//过去12个月每月新增的人数
public List newCustomerLastTwelveMonth() {
List a = (List) new java.util.ArrayList();
Calendar c = Calendar.getInstance();
for (int i = 0; i < 12; i++) {
c.add(Calendar.MONTH, 0);
Date after = c.getTime();
c.add(Calendar.MONTH, -1);
Date before = c.getTime();
int number = doSomethingAboutADate(before, after);
a.add(number);
}
return a;
}
//此函数能统计出每个月增加的用户数,同样可以调用后用循环实现12个每个月新增人数
private int doSomethingAboutADate(Date startdate, Date enddate) {
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
String hql = " from TbCustomer u where" + " u.DCreateDate > '"
+ dateFormat.format(startdate) + "' and u.DCreateDate < '"
+ dateFormat.format(enddate) + "' ";
List users = this.getHibernateTemplate().find(hql);
return users.size();
}
//查询订单成功数目小于successfulOrder而生成订单数大于totalOrder的注册用户
public List searchCustomerByOrder(int successfulOrder, int totalOrder) {
// TODO Auto-generated method stub
String hql = "select l.ICustomerId ,l.CMobileNum,l.CCustomerName,u.IOrderCount," +
"u.IOrderOkCount from TbCustomerOrderLog u,TbCustomer l where u.ICustomerId=l.ICustomerId and u.IOrderCount>"
+ totalOrder + " and u.IOrderOkCount<" + successfulOrder;
Session session = (Session) getHibernateTemplate().getSessionFactory()
.openSession();
Query q = session.createQuery(hql);
List list = q.list();
return list;
}
//根据电话号码查询Customer的所有信息
public List searchCustomerByTelNumber(final String telNumber, final int startRow,final int pageSize) {
// TODO Auto-generated method stub
try {
return (List) getHibernateTemplate().execute(
new HibernateCallback() {
public Object doInHibernate(Session session)
throws HibernateException {
String k = "'%" + telNumber + "%'";
String hql = " from TbCustomer u where u.CMobileNum like "+k;
List queriedResult = session.createQuery(hql)
.setFirstResult(startRow).setMaxResults(
pageSize).list();
Hibernate.initialize(queriedResult);
return queriedResult;
}
});
} catch (RuntimeException re) {
throw re;
}
}
//按电话号码查询,相匹配的总数。此函数总要是为JSF层的分页做准备
public int getCustomerRowCount(final String telNumber)
{
// TODO Auto-generated method stub
String k = "'%" + telNumber + "%'";
String hql="select count(*) from TbCustomer u where u.CMobileNum like "+k;
return (Integer)this.getHibernateTemplate().find(hql).get(0);
}
//给定月份内没有任何订单的用户。比如,传参是3,表示的就是距现在三个月内没有任何订单用户,返回用户的姓名和电话号码,封装成List.
public List searchNoOrderCustomer(int certainMouth) {
Date date1 = aboutFindDate(certainMouth);
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
String hql = "select l.CMobileNum ,l.CCustomerName from TbCustomerOrderLog u ,TbCustomer l where u.ICustomerId=l.ICustomerId and u.DLastOkOrderDate< '"
+ dateFormat.format(date1) + "' ";
Session session = (Session) getHibernateTemplate().getSessionFactory()
.openSession();
Query q = session.createQuery(hql);
List list = q.list();
return list;
}
}
//这个函数主要是给上个函数(给定月份没有订单的用户),此函数能将时间返回到我们所需要的点。假设我们输入3,而我们的现在的时间点2007年08月01日,通过这个函数,我们就能得到时间是2007年05月01日。
相关推荐
3. **日期时间函数**:如`current_date()`, `current_time()`, `current_timestamp()`,获取当前日期、时间或日期时间,还有`date()`, `time()`, `timestamp()`等用于提取日期、时间部分。 4. **转换函数**:`cast...
时间日期函数** - **Current_Date, Current_Time, Current_Timestamp**: 获取当前日期、时间戳。 - **示例**: `SELECT CURRENT_DATE, CURRENT_TIME, CURRENT_TIMESTAMP, t.id FROM Topic t` **6. 分组与统计函数...
**对象的持久化**:指将程序中的对象状态存储到持久存储设备(如磁盘)上,以便在后续的时间点可以恢复这些对象的状态。在Hibernate中,对象持久化的具体含义包括以下几个方面: - **保存**:将对象状态存储到数据库...
5. **Query 改进**:HQL 和 Criteria 查询支持更多的函数和操作符,如日期、时间函数、集合操作等,使得查询表达力更加强大。 6. **性能优化**:3.6 版本对缓存机制进行了优化,支持更高效的二级缓存策略,同时优化...
- 使用`SUM()`函数来计算每个顾客在指定时间段内的消费总额。 - `GROUP BY`子句按顾客ID分组结果集。 #### 五、Native SQL实现多表联合查询 有时候,我们可能需要执行一些更复杂的SQL查询,这时可以使用Hibernate的...
以下是关于Hibernate API在Hibernate 3.0版本中的关键知识点的详细解释: 1. **SessionFactory**: 这是Hibernate的核心接口之一,它负责创建Session对象。SessionFactory是线程安全的,通常在应用启动时创建并缓存...
7. **commons-collections-x.x.jar** 和 **commons-lang3-x.x.jar**:Apache Commons Collections提供了丰富的集合操作工具,而Commons Lang提供了各种实用的字符串处理、日期时间操作等函数,它们在Hibernate中起到...
- **异步处理**:使用异步任务队列处理长时间运行的任务。 - **批处理**:一次性处理大量数据,提高效率。 综上所述,“邹波hibernate50讲”视频教程覆盖了Hibernate框架的基础知识、实体类设计、对象-关系映射、...
- **1.3.3 使关联工作**:解释如何确保关联关系在 Hibernate 中正确运行。 - **1.3.4 值类型的集合**:讲解如何处理 Java 类中的集合属性。 - **1.3.5 双向关联**:介绍双向关联的概念和实现方法。 - **1.3.6 使...
在这个“hibernate5.3 jar包”中,我们找到了Hibernate 5.3.0 Final的稳定版本,这个版本在社区中经过广泛测试,被认为是一个可靠的选择。 首先,让我们深入了解Hibernate ORM的核心功能。Hibernate提供了一个API,...
在Hibernate框架中,实体映射文件(通常为`.hbm.xml`)用于定义Java对象与数据库表之间的映射关系。这其中包括了属性到数据库表列的映射、主键生成策略、以及一些高级特性如延迟加载等。在某些情况下,我们可能希望...
在Hibernate中,实体类代表数据库中的表,它们通过注解或XML映射文件与数据库进行关联。Hibernate Tools可以分析数据库结构,自动生成对应的实体类,包括属性(fields)、getter/setter方法、构造函数等。这样,...
为了解决这一问题,"hibernate_code_generator.rar"提供了自动化代码生成工具,帮助开发者节省时间,提高开发效率。 首先,我们来了解什么是Hibernate Code Generator。这是一款基于Hibernate的代码生成器,能够...
在Java开发中,Hibernate是一个非常流行的ORM(对象关系映射)框架,它极大地简化了数据库操作。为了提高性能,Hibernate引入了缓存机制,分为一级缓存和二级缓存。本篇文章将深入探讨Hibernate缓存,并通过实例演示...
Hibernate 是一款开源的对象关系映射(ORM)框架,它允许开发人员将 Java 对象映射到数据库表中的记录,反之亦然,从而简化了数据持久化层的开发工作。在 ORM 的帮助下,开发人员可以使用面向对象的编程语言特性来...
Java 8引入了许多新特性,比如Lambda表达式、函数式接口、Stream API和日期时间API等。这些特性可以提高代码的简洁性和可读性,特别是在处理集合和并发时。 **Maven** Maven是一个项目管理和综合工具,它管理项目的...
在Java开发中,Hibernate是一个非常流行的ORM(Object-Relational Mapping)框架,它简化了与关系数据库的交互。当使用Hibernate连接Microsoft SQL Server数据库时,需要特定的驱动支持。标题提到的"hibernate连接...
HQL还提供了更高级的功能,如命名参数、集合操作(IN, NOT IN)、日期和时间函数、空值处理等。这些特性使得开发者能够在不直接接触底层SQL的情况下,高效地进行数据操作。 在实际应用中,HQL通过Hibernate的...
10. **类型转换**:在数据库和Java对象之间进行类型转换是Hibernate的重要部分,例如日期和时间的处理。 总之,这个压缩包提供的Hibernate 3.2和修复后的CGlib 2.2是为了解决可能的运行时冲突,并提供了一个完整的...
11.1.2 Java时间和日期类型的Hibernate映射类型 11.1.3 Java大对象类型的Hibernate映射类型 11.1.4 JDK自带的个别Java类的Hibernate映射类型 11.1.5 使用Hibernate内置映射类型 11.2 客户化映射类型 ...