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类),这 ...
随机推荐
- 【机房重构】SQL之视图
近期在重构机房收费系统,越往后就会越感觉到这里很多其它的是对之前学过知识(数据库,设计模式)的一种应用和回想.比方在登录功能中用到了抽象加反射,在学生下机中,我们能够用触发器来同一时候更新两个表.这里 ...
- libcurl使用演示样例
简要说明:C++使用libcurl訪问"www.baidu.com".获取返回码和打印出http文件 /* * @ libcurl使用演示样例 * @ 2014.04.29 * @ ...
- Hadoop平台提供离线数据和Storm平台提供实时数据流
1.准备工作 2.一个Storm集群的基本组件 3.Topologies 4.Stream 5.数据模型(Data Model) 6.一个简单的Topology 7.流分组策略(Stream grou ...
- [转] Mac OX上安装MongoDb
https://scotch.io/tutorials/an-introduction-to-mongodb MongoDB的安装有好多种安装方法,有普通青年的HomeBrew方式,也有文艺青年的源码 ...
- iOS UIKit:viewController之Present (3)
弹出和转换view controller技术是一种快速且简单的方式将新view content展示在屏幕中.目前有两种方式弹出新的view controller:Present方式和segues方式. ...
- Practice 15.07.07 计算几何 - 1
[题目在这里] A.POJ 2318 叉积判断点在直线的那一侧 cross(X2-X1,P-X1) (x1,x2是直线上两点,p是要判断的点) >0 表示在左侧 <0 表示在右侧 (右手 ...
- Java 原始数据类型转换
在开发中经常遇到数据类型转换的问题,大多数都是拿来强制转换,强制转换可能会出现你意想不到的问题: int a = -1; 我们经过多重转换之后:int b = (int)(char)(byte) a ...
- JAVA导出Excel封装
1.数据bean public class ExcelBean { private String name; private String sheetName; private ExcelTitle[ ...
- HTML5 文件域+FileReader 读取文件(二)
一.读取文本文件内容,指定字符编码 <div class="container"> <!--文本文件验证--> <input type="f ...
- 安装Visual Studio 2010时提示"The location specified for the help content store is invalid or you do not have access to it".
运行注册表: (运行->输入"regedit").在 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Help\v1.0中,删除"Loc ...