“select count(*) from ”这句sql我估计没有有不知道是干什么用的,在jdbc,ibatis里很容易就会返回一个int或者Object对象,使得程序员很容易得到这个分页记录总数,可以在hibernate中就稍微有些麻烦了,因为hibernate用的是hql,但是虽然是hql但是也是有办法滴。
其实把hql当成sql用就ok了,代码也就几句:
public int contactsCount() {
final String hql = "select count(*) from xxx";
return (int) this.getHibernateTemplate().execute(new HibernateCallback<Integer>() {
public Integer doInHibernate(Session session) throws HibernateException, SQLException {
Query query = session.createQuery(hql);
List result=query.list();
return Integer.parseInt(result.get(0).toString());
}
});
}
通过debug可以看到这个result里面成员的类型是Long型而且result的长度应该是1,所以在返回类型上做一些转换就可以用了。
分享到:
相关推荐
`Pagehelp.java`可能包含一个静态方法,接受Hibernate的Session对象、查询条件、每页大小和当前页数作为参数,内部会使用Criteria或HQL进行分页查询并返回一个封装了查询结果和分页信息的对象。这个对象可能是自定义...
2. `getAllRowCount` 方法接收一个HQL查询语句,返回对应查询的记录总数。 在`MemberDaoImpl`实现类中,我们使用了Spring的`HibernateDaoSupport`类作为基类,它提供了对Hibernate操作的支持。`queryForPage` 方法...
- 最后,执行分页后的HQL查询并返回结果列表。 ### 实现细节 1. **`PageBean`** 是一个封装了分页信息的类,它通常包含当前页、每页大小、总页数和数据列表等属性。 2. **Session** 对象是Hibernate的核心组件,...
3. **分页逻辑**:根据分页参数和总数,我们可以计算出当前页的起始位置和结束位置,然后构造出对应的SQL查询语句(例如`SELECT * FROM table LIMIT start, pageSize`),在Hibernate中,这可以通过HQL(Hibernate ...
- 构造查询条件:在DAO层,根据当前页和每页记录数构造分页SQL或HQL(Hibernate查询语言)。 - 执行查询:使用Hibernate Session执行分页查询。 - 返回结果:将查询结果包装成业务对象或列表,传回给控制器和视图...
在Hibernate中,可以使用`Criteria`的`setProjection`方法配合`Projections.rowCount()`来获取记录总数。 综上所述,`Hibernate+sqlserver2000分页`是一个结合了ORM框架和数据库分页策略的技术主题。在实际应用中,...
9. **数据库设计**:虽然本项目未具体提及,但实现分页通常需要数据库表中有一个记录总数的字段,或者在查询时动态计算总数。此外,数据库索引优化对于分页查询的效率至关重要。 通过这个项目,初学者不仅可以学习...
此外还有一个`getAllRowCount()`方法用于获取所有记录的总数。 2. **UserDaoImpl实现类**: 用户DAO的实现类,继承自HibernateDaoSupport,它提供了对Hibernate操作的基本支持。在`getUser(int offset, int length...
- `totalRows`: 记录总数。 - `totalPages`: 总页数。 - `pageSize`: 每页显示的数据条数,默认为10条记录。 - `currentPage`: 当前页数,默认为1。 - `hasPrevious`: 是否有上一页。 - `hasNext`: 是否有下一页。 ...
例如,如果每页显示10条记录,第5页的数据将是从总数第40条开始的10条记录。 3. **处理请求参数**:`jsp`页面需要接收用户的页码请求,通常通过URL参数或表单提交实现。然后,这些参数被传递到后台的Java服务方法,...
1. **getTotalCount**: 使用Hibernate查询数据库获取记录总数。 2. **getList**: 执行分页查询并返回结果集。 ```java public class Paginate extends HibernateDaoSupport implements PaginateInterface { // ...
1. **获取总记录数**:通过查询数据库获取符合条件的所有记录总数。 2. **确定当前页码和每页记录数**:由客户端传入当前页码和每页记录数。 3. **计算起始位置**:根据总记录数、当前页码和每页记录数计算出需要...
5. 分页控制器:Struts中的Action类应包含处理分页请求的方法,根据请求参数调整查询条件并返回分页结果。 在这个“MyPaging”项目中,开发者可能已经实现了上述功能,包括定义Action类处理分页请求,编写Hibernate...
在分页查询中,我们需要两个核心方法:一个用于执行具体的分页查询,另一个用于获取所有记录的总数。在`MemberDao`接口中,定义了如下的方法: ```java public interface MemberDao { // 省略其他代码 public ...
这里直接调用`getHibernateTemplate().find(hql).size()`来获取列表的大小,即记录总数。 在实现分页查询的过程中,`HibernateDaoSupport`起到了关键作用。它是Spring提供的一个支持类,使得我们可以在不直接接触`...
3. 为了获取总记录数,通常需要执行一次无限制的查询,然后计算结果集的大小,因为Hibernate的Criteria和HQL查询不直接返回总数。 **分页组件** 分页组件通常是一个独立的库,如DisplayTag、PagerTaglib或自定义的...
- **构造SQL语句**:`totalCountSQL`用于执行统计记录总数的SQL,`listSQL`用于根据当前页数和每页大小获取当前页的数据。通常需要动态构建这两个SQL语句,将分页参数(如当前页数和每页大小)插入其中。 3. **...
为了实现动态分页,需要在Action中计算总页数,这通常基于查询结果的总数和每页显示的记录数。在JSP页面中,用户可以通过点击“上一页”、“下一页”或直接输入页码进行跳转,Action会根据这些信息调整查询参数并...
- Pager类是分页实现中用于封装分页信息的一个对象,例如它包含了记录总数、总页数、每页显示数据条数、当前页数等信息。 - Pager类提供了对这些属性的get和set方法,并且还包含了计算分页信息的逻辑,比如根据...
在这个项目中,Struts2可能是用来处理用户请求,转发到对应的控制器,并最终返回分页数据显示的页面。 **Hibernate** 是一个对象关系映射(ORM)框架,它将Java对象与数据库中的表进行映射,使得开发者可以使用面向...