public PageFetch listChargeReminderUsers(final String userId,
final String domainIds, final String startTime,
final String endTime, final PageFetch pf)
throws DataAccessException {
return (PageFetch) this.getHibernateTemplate().execute(
new HibernateCallback() {
public Object doInHibernate(Session session)
throws HibernateException {
Map<String, Object> hmp = new HashMap<String, Object>();
int pageNo = pf.getCurrentPage();
int recordsPerPage = pf.getPageSize();
//分别获取原始SQL、获取总数SQL、分页SQL
String sql = getSql(userId,domainIds,startTime,endTime);
String countSql = Tools.getCountSql(sql);
String pagedSql = Tools.generatePageDivSql(sql, pageNo,recordsPerPage);
//获取总数
List list = session.createSQLQuery(countSql).addScalar("countnum", Hibernate.LONG).list();
Long count = (Long) list.get(0);
hmp.put("count", count);
SQLQuery sqlQuery = session.createSQLQuery(pagedSql);
sqlQuery.addScalar("USERID", Hibernate.STRING);
sqlQuery.addScalar("CUSTOMERNAME", Hibernate.STRING);
sqlQuery.addScalar("CUSTOMERADDRESS", Hibernate.STRING);
sqlQuery.addScalar("TOTALAMOUNT", Hibernate.DOUBLE);
sqlQuery.addScalar("OWEFEEAMOUNT", Hibernate.DOUBLE);
sqlQuery.addScalar("USERCOUNT", Hibernate.LONG);
List records = sqlQuery.list();
List<Map> result = new ArrayList<Map>();
for (int i = 0; i < records.size(); i++) {
Object[] fields = (Object[]) records.get(i);
Map<String, Object> spUserCount = new HashMap<String, Object>();
spUserCount.put("userId", (String) fields[0]);
spUserCount.put("customerName", (String) fields[1]);
spUserCount.put("customerAddress", (String) fields[2]);
spUserCount.put("totalAmount", (Double) fields[3]);
spUserCount.put("oweFeeAmount", (Double) fields[4]);
spUserCount.put("userCount", (Long) fields[5]);
result.add(spUserCount);
}
hmp.put("records", result);
//构造分页对象
int start = (pageNo - 1) * recordsPerPage + 1;
PageFetch returnPf = new PageFetch(result,count.intValue(),recordsPerPage,start);
return returnPf;
}
});
}
分享到:
相关推荐
HQL支持各种复杂的查询,包括但不限于分页查询、模糊查询等。 #### 二、HQL基本查询 在给定的代码示例中,展示了如何进行简单的HQL查询。例如: ```java final String hql = "from User as u where u.name = :...
总结,"Hibernate 多表连接分页查询示范项目"是一个实用的示例,它展示了如何在实际应用中利用 Hibernate Criteria API 实现复杂查询和分页,对于学习和掌握 Hibernate 的高级特性和数据库操作技巧非常有帮助。...
- **分页查询**:可以使用 `setFirstResult` 和 `setMaxResults` 方法实现分页查询。 - **排序**:通过添加 `order by` 子句来指定排序规则。 - **连接查询**:可以使用 `join` 关键字进行连接查询,以获取多个表中...
以下是一个使用HQL分页查询的例子: ```java String hql = "from User"; Query query = session.createQuery(hql); query.setFirstResult(pageIndex * pageSize); query.setMaxResults(pageSize); List<User> ...
### Hibernate 实现分页查询详解 #### 一、引言 在进行数据库操作时,为了提高用户体验和系统性能,分页查询是一项非常重要的技术。Hibernate作为Java领域内一个优秀的对象关系映射(ORM)框架,提供了强大的数据...
这里使用了HQL(Hibernate Query Language)来执行查询。例如,在`getProductsMenuSub`方法中,通过以下HQL语句实现了连表查询: ```java String queryString = "select a.productsName from TopProducts as a, ...
在这个类中,我们可以通过编写Hibernate HQL或SQL查询语句来实现分页查询。 4. **Struts2 Action** 在Action类中,我们需要处理来自用户的请求参数,如当前页码和每页显示记录数等,并调用DAO中的分页查询方法获取...
本篇将深入探讨Hibernate中的分页查询功能以及它如何处理数据库连接,帮助你更有效地管理大数据量的查询操作。 首先,我们来看一下什么是分页查询。在Web应用中,当用户需要浏览大量数据时,一次性加载所有数据不仅...
4. 分页查询:使用setFirstResult和setMaxResults方法实现分页,如“query.setFirstResult(0).setMaxResults(10)”。 5. 参数化查询:避免SQL注入,提高代码复用,如“SELECT u FROM User u WHERE u.name=:name”,...
除了基本的查询之外,HQL 还支持更复杂的查询,例如连接查询、子查询以及分页查询等。 1. **连接查询** - 使用 `JOIN` 关键字进行连接查询。 - 示例:查询所有用户的订单信息。 ```java String hql = "SELECT u...
总结起来,熟练掌握Hibernate HQL的命名参数和Query接口的分页查询是提高数据操作效率的关键。同时,注意处理可能出现的数据库关键字冲突问题,确保ORM映射的正确性。通过这些技巧,开发者可以更好地控制和优化...
在分页查询中,Hibernate提供了一种称为HQL(Hibernate Query Language)的SQL方言,可以方便地实现复杂的查询,包括分页查询。此外,Hibernate还支持Criteria查询,这是一种更加面向对象的查询方式,同样可以实现...
在Hibernate中,我们可以使用Criteria、HQL(Hibernate Query Language)或者JPA的Query来实现分页查询。然而,这些方式在每个查询中都需要编写重复的分页代码,这降低了代码的复用性。因此,创建一个通用的分页辅助...
本篇主要围绕"Hibernate分页查询效果"这一主题,深入探讨如何利用Hibernate框架实现高效、便捷的分页功能。 首先,Hibernate是一个优秀的Java持久化框架,它提供了ORM(对象关系映射)解决方案,使得开发者可以使用...
总结,Hibernate的分页查询是其强大功能的一部分,通过Criteria API、HQL或自定义SQL,我们可以轻松地在Java应用中实现数据库的分页操作。在实际开发中,应结合数据库特性和性能需求,选择最合适的分页策略。
这个压缩包提供的案例是这三个框架的整合使用,涵盖了基本的CRUD(创建、读取、更新、删除)操作,并且包含了分页查询的功能。下面将详细讲解这些知识点。 1. **Spring MVC** - Spring MVC是Spring框架的一个模块...
- 在处理大量数据时,考虑分页查询以提高效率。 综上所述,Hibernate的HQL模糊查询是开发中不可或缺的工具,它提供了一种简单而强大的方式来处理数据库的模糊查询需求。通过理解并熟练掌握这些概念,可以更好地利用...
本示例中,我们看到如何利用Struts2、Spring和Hibernate这三个流行框架来实现分页查询功能。下面我们将详细讲解这个实现过程。 1. **UserDao接口**: UserDao接口定义了分页查询的方法,通过`getUser(int offset, ...
"HibernateHQL实现前台翻页"这一主题就是关于如何利用Hibernate的HQL(Hibernate Query Language)来实现数据库查询的分页功能,并结合Servlet(通常与MVC模式中的Controller层对应)和MySQL数据库来构建一个完整的...