DaoImpl中实现查询分页-使用HibernateCallback来做更加方便
/**
*
*/
package com.wolfgang.dao; import java.sql.SQLException;
import java.util.List; import org.hibernate.HibernateException;
import org.hibernate.Query;
import org.hibernate.Session;
import org.springframework.orm.hibernate3.HibernateCallback;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport; import com.wolfgang.VO.PageVO; /**
* @author Administrator
*
*/
public class BaseDaoImp extends HibernateDaoSupport implements IBaseDao { public Object get(Integer id) {
return getHibernateTemplate().get(Object.class, id);
} /*
* (non-Javadoc)
*
* @see com.wolfgang.dao.IBaseDao#save(java.lang.Object)
*/ public void save(Object obj) {
getHibernateTemplate().save(obj);
} /*
* (non-Javadoc)
*
* @see com.wolfgang.dao.IBaseDao#update(java.lang.Object)
*/ public void update(Object obj) {
getHibernateTemplate().update(obj);
} /*
* (non-Javadoc)
*
* @see com.wolfgang.dao.IBaseDao#delete(java.lang.Object)
*/
public void delete(Object obj) {
getHibernateTemplate().delete(obj);
} /*
* (non-Javadoc)
*
* @see com.wolfgang.dao.IBaseDao#findById(int)
*/
public <T> T findById(Class<T> className, int id) {
return (T) getHibernateTemplate().get(className, id);
} /*
* (non-Javadoc)
*
* @see com.wolfgang.dao.IBaseDao#getAll(java.lang.Class)
*/
public <T> List<T> getAll(Class<T> className) {
return getHibernateTemplate().loadAll(className); } /*
* (non-Javadoc)
*
* @see com.wolfgang.dao.IBaseDao#findPage(java.lang.String, int, int,
* java.lang.Object[])
*/
public PageVO findPage(final String hql, int offset, int pageSize,
final Object... params) {
final String totalHql = getTotalHql(hql);
Long total = (Long) getHibernateTemplate().execute(
new HibernateCallback() { public Object doInHibernate(Session session)
throws HibernateException, SQLException {
Query query = session.createQuery(totalHql);
return query.uniqueResult();
}
}); List data = (List) getHibernateTemplate().execute(
new HibernateCallback() {
public Object doInHibernate(Session session)
throws HibernateException, SQLException { Query query = session.createQuery(hql);
if (params != null) {
for (int i = 0; i < params.length; i++) {
query.setParameter(i, params[i]);
}
} return query.list();
}
}); PageVO pageVO = new PageVO();
pageVO.setTotal(total);
pageVO.setData(data);
return pageVO;
} private String getTotalHql(String hql) {
int index = hql.indexOf(hql);
if (index == -1) {
return null;
} else {
return "select count(*)" + hql.substring(index);
} } }
DaoImpl中实现查询分页-使用HibernateCallback来做更加方便的更多相关文章
- hibernate中带查询条件的分页
所谓分页,从数据库中分,则是封装一个分页类.利用分页对象进行分页. 但,分页往往带查询条件. 分页类的三个重要数据:[当前页码数],[数据库中的总记录数],[每页显示的数据的条数] 原理:select ...
- RDIFramework.NET 中多表关联查询分页实例
RDIFramework.NET 中多表关联查询分页实例 RDIFramework.NET,基于.NET的快速信息化系统开发.整合框架,给用户和开发者最佳的.Net框架部署方案.该框架以SOA范式作为 ...
- MVC中,查询以异步呈现,分页不用异步的解决方案
MVC中,查询以异步呈现,分页不用异步的解决方案 这种需求,用一个ASPX页面和一个ASCX分部视图就可以解决了,ASPX提供对ASCX的引用,ASCX显示列表信息,ASPX主页面提供查询功能 < ...
- sql中对查询出来的数据进行分页
当sql中存储的数据量比较大时,在web中 数据显示时都会对数据进行分页,分页不会在客户端进行分页,而是在数据库查询过程中进行了分页. sql代码: DECLARE @pageindex INT; - ...
- asp.mvc中的vue分页实例,分页组件无法重置reload,解决点击查询按钮后,分页不刷新的问题
刚刚接触Vue.js,现在需要做一个查询功能,并且进行服务端分页.主要思路是在页面中注册一个分页组件,然后进行调用.代码如下 1.引用vue.js,具体去网上下载 2.在html的body中添加如下代 ...
- Oracle中的SQL分页查询原理和方法详解
Oracle中的SQL分页查询原理和方法详解 分析得不错! http://blog.csdn.net/anxpp/article/details/51534006
- .net下MVC中使用Tuple分页查询数据
主要是在DAL层写查询分页的代码. 例如DAL层上代码: public Tuple<List<WxBindDto>, int> GetMbersInfo(int start, ...
- SpringMVC结合easyUI中datagird实现分页
SpringMVC结合easyUI中datagird实现分页 DataGrid以表格形式展示数据,并提供了丰富的选择.排序.分组和编辑数据的功能支持.轻量级,单元格合并.多列标题.冻结列和页脚只是其中 ...
- 完善ext.grid.panel中的查询功能(紧接上一篇)
今天的代码主要是实现,Ext.grid.panel中的查询,其实我也是一名extjs新手,开始想的实现方式是另外再创建一个新的grid类来存放查询出的数据(就是有几个分类查询就创建几个grid类),这 ...
随机推荐
- Git服务器仓库的搭建和客户端使用方法
环境说明: 1.fedora21 桌面系统 2.已经配置好yum仓库 一.安装git # yum install git 1.1 创建git用户 创建git账户并登录,直接指定用户目录到/home ...
- 使用redis来实现分布式锁
在实际的工作中,有部分的特定场景需要使用到分布式锁来进行跨服务器资源的统一调配.之前在一家医疗互联网公司,因为黄牛抢号等原因,造成同一个患者同一时段在同一个医生处,挂到了两个及以上的号,我对之前我司实 ...
- 【Android - V】之ViewPager的使用
ViewPager是Android V4包中的一个控件,常常用来作为首页的滚动广告,也常常结合Fragment来实现页面的切换效果. ViewPager和ListView有很多相似的地方,都是适配器控 ...
- HDU--5280(dp或枚举)
官方题解: 这个题有非常多O(n2)的算法.这里说一种:枚举每个区间,在枚举区间的同一时候维护区间内的最小值和区间和,将最小值与P的大小进行比較,贪心地取最大值就可以.注意若枚举到的区间是整个数组,则 ...
- git pull 部署问题一揽子问题解决
之前遇到问题 在服务器拉取一直不成功, php 的shell函数 调用 git pull 一直不成功 ,但是单独 用root 权限 在机器上面 执行 git pull 是可以的 说明语法没问题. 而 ...
- node.js 安装
http://my.oschina.net/zhangdapeng89/blog/52793 windows 自带的 ims文件安装后 有 安装npm 点击bat文件可自动安装 npm 1安装 nod ...
- myeclipse配置svn亲测
1.安装目录更改为myeclipse install 目录:E:\MyEclipse85\MyEclipse 8.5common 目录: E:\MyEclipse85\Common ...
- [转] SSH 密钥认证机制
使用 RSA 密钥对进行 SSH 登录验证 使用 RSA 密钥对验证 SSH 的优点是 1) 不用打密码 2) 比密码验证更安全:缺点是 1) 第一次配置的时候有点麻烦 2) 私钥需要小心保存.Any ...
- Charles --- Mac 抓包工具
安装 官方网站Charles 是一款收费软件,可以免费体验30天.网上有破解版. 使用 infoq 上有一篇很棒的教程:iOS开发工具——网络封包分析工具Charles 注意事项 这是我使用过程中遇到 ...
- 怎样写好一份IT技术岗位的简历
10月是校园招聘的旺季,很多应届毕业生都忙碌起来了,从CSDN笔试-面试文章的火热程度,从我收到的简历就看得出来. 我很久没有参与笔试和面试了,所以只能从“简历”来阐述下我的看法. 截至目前,已经帮8 ...