通用Hibernate DAO类(包括分页)
package com.jronline.dao; import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.List; import org.hibernate.HibernateException;
import org.hibernate.Query;
import org.hibernate.SQLQuery;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.springframework.orm.hibernate3.HibernateCallback;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport; //import com.jkjshoponline.entity.OrderOfMembercenterDTO; public abstract class CommonDAOImpl extends HibernateDaoSupport{ //执行SQL原生查询
public List findHqlForSql(final String hql) { List list = getHibernateTemplate().executeFind(new HibernateCallback()
// 用来回调的匿名内部类
{
public Object doInHibernate(Session session) throws HibernateException, SQLException {
Query query = session.createSQLQuery(hql);
return query.list();
}
});
return list;
} /**
* 分页信息
*
* @param hql
* @param first
* @param max
* @return List
*/
public List findListForPage(final String hql, final int pageId, final int pageSize) {
List list = getHibernateTemplate().executeFind(new HibernateCallback()
// 用来回调的匿名内部类
{
public Object doInHibernate(Session session) throws HibernateException, SQLException {
Query query = session.createQuery(hql);
int comp=(pageId-1)*pageSize;
query.setFirstResult(comp);// 第一行
query.setMaxResults(pageSize);// 最大行
List list = query.list();
return list;
}
});
return list;
} /**
* sql by qbzuo 2012-10-15
* 分页信息
*
* @param sql
* @param first
* @param max
* @return List
*/
public List findSQLListForPage(final String sql, final int pageId, final int pageSize) {
List list = getHibernateTemplate().executeFind(new HibernateCallback()
// 用来回调的匿名内部类
{
public Object doInHibernate(Session session) throws HibernateException, SQLException {
SQLQuery query = session.createSQLQuery(sql);
int comp=(pageId-1)*pageSize;
query.setFirstResult(comp);// 第一行
query.setMaxResults(pageSize);// 最大行
List list = query.list();
return list;
}
});
return list;
} /**
* 查询所有的记录数
*
* @author qbzuo
* @param totalHql
* @return int
*/
public int findTotalRow(String totalHql) {
int totalRow = 0;
List list = getHibernateTemplate().find(totalHql);
if (list.size() > 0&&list.get(0)!=null) {
// System.out.println("list.get(0).toString()="+list.get(0).toString());
totalRow = Integer.parseInt(list.get(0).toString());
}
return totalRow;
} public Double findTotal(String totalHql){
double total=0;
List list = getHibernateTemplate().find(totalHql);
if(list.size()>0 && list.get(0)!=null){
total = Double.parseDouble(list.get(0).toString());
} return total;
} /**
* 执行HQL
*
* @author qbzuo
* @param totalHql
* @return int
*/
public List findHql(String hql) { return getHibernateTemplate().find(hql);
} /**
* 执行SQL
*
* @author qbzuo
* @param totalHql
* @return int
*/
public List findSql(final String sql) { List list = getHibernateTemplate().executeFind(new HibernateCallback()
// 用来回调的匿名内部类
{
public Object doInHibernate(Session session) throws HibernateException, SQLException {
SQLQuery query = session.createSQLQuery(sql);
List list = query.list();
return list;
}
});
return list;
}
//
public List findSqlLimit(final String sql,final int limit){ List list = getHibernateTemplate().executeFind(new HibernateCallback()
// 用来回调的匿名内部类
{
public Object doInHibernate(Session session) throws HibernateException, SQLException {
SQLQuery query = session.createSQLQuery(sql);
query.setFirstResult(0);// 第一行
query.setMaxResults(limit);// 最大行
List list = query.list(); return list;
}
});
return list;
} /**
* 查找一个表的前几条记录,如前3条
* @param hql
* @param limit
* @return
*/
public List findHqlLimit(final String hql,final int limit) { List list = getHibernateTemplate().executeFind(new HibernateCallback()
// 用来回调的匿名内部类
{
public Object doInHibernate(Session session) throws HibernateException, SQLException {
Query query = session.createQuery(hql); query.setFirstResult(0);// 第一行
query.setMaxResults(limit);// 最大行
return query.list(); }
});
return list;
} /**内部
* 执行多条更新
* @param hql
* by qbzuo
*/
public int updateSqlList(final String sql) { Session session=getHibernateTemplate().getSessionFactory().openSession();
java.sql.Connection con=session.connection();
Statement statement;
try {
Transaction transaction= session.beginTransaction();
transaction.begin();
statement = con.createStatement();
int row=statement.executeUpdate(sql);
transaction.commit();
con.close();
return row;
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return -1;
} } /**内部 qbzuo 2013-1-25
* 执行多条更新
* @param hql
* by qbzuo
*/
public int updateSql(final String sql) { Object result = getHibernateTemplate().execute(new HibernateCallback()
// 用来回调的匿名内部类
{
public Object doInHibernate(Session session) throws HibernateException, SQLException {
SQLQuery query = session.createSQLQuery(sql); int result = query.executeUpdate();
return new Integer(result); }
});
return result!=null?(Integer)result:0; } /**内部 qbzuo 2013-1-25
* 执行多条更新
* @param hql
* by qbzuo
*/
public int updateHql(final String hql) { Object result = getHibernateTemplate().execute(new HibernateCallback()
// 用来回调的匿名内部类
{
public Object doInHibernate(Session session) throws HibernateException, SQLException {
Query query = session.createQuery(hql); int result = query.executeUpdate();
return new Integer(result); }
});
return result!=null?(Integer)result:0; } //抽象方法得到dao
//public abstract HibernateDaoSupport getDao(); }
宝贝网址:
通用Hibernate DAO类(包括分页)的更多相关文章
- hibernate基础dao类
此文章是基于 搭建SpringMVC+Spring+Hibernate平台 功能:数据库的保存.更新.删除:sql.hql查询:分页查询:调用存储过程 创建hibernate基础dao类: BaseD ...
- hibernate和struts2实现分页功能
1.DAO层接口的设计,定义一个PersonDAO接口,里面声明了两个方法: public interface PersonDAO { public List<Person> queryB ...
- spring+hibernate实体类注解详解(非原创) + cascade属性取值
@Entity //继承策略.另一个类继承本类,那么本类里的属性应用到另一个类中 @Inheritance(strategy = InheritanceType.JOINED ) @Table(nam ...
- .net通用CMS快速开发框架——问题1:Dapper通用的多表联合分页查询怎么破?
最近在弄一个东东,类似那种CMS的后台管理系统,方便作为其它项目的初始化框架用的. 现在遇到个问题,如标题所示:Dapper通用的多表联合分页查询怎么破? 难道只能通过拼接sql或者使用存储过程吗?我 ...
- (转) Eclipse通过HibernateTools实现逆向生成Hibernate实体类
背景:工作中使用Hibernate进行持久化的开发工作,所以有必要详细了解这方面的知识. ps:这里有个问题就是刷新表的时候速度太慢了.还不如自己手动去创建.如果表太多倒是可以采取批量生成的策略. 在 ...
- liferay总结的通用的工具类
在写增删改查的时候,自己动手写了几个通用的工具类,这几个通用的工具类也是基于API写的 第一个是liferay中的分页.跟我们做普通的web开发,分页是一样的首先需要建立一个分页的实体的类 packa ...
- 解决hibernate对Sql Server分页慢的问题
一.hibernate分页 hibernate对MsSql的伪分页 分页是web项目中比不可少的一个功能,数据量大的时候不能全部展示必然要用到分页技术.相信大家对hibernate中的分页都不陌生: ...
- 利用JAVA反射机制设计通用的DAO
利用JAVA反射机制设计一个通用的DAO 反射机制 反射机制指的是程序在运行时能够获取自身的信息.在java中,只要给定类的名字, 那么就可以通过反射机制来获得类的所有信息. 反射机制创建类对象 ...
- (转) Hibernate持久化类与主键生成策略
http://blog.csdn.net/yerenyuan_pku/article/details/65462930 Hibernate持久化类 什么是持久化类呢?在Hibernate中持久化类的英 ...
随机推荐
- iPad开发
获得view: self.categoryItem.customView 设置控制起 : 在POP ver中的尺寸 self.preferredContentSize = 坚挺三部曲 1. 通过设置 ...
- 彻底弄懂响应式设计中的em和rem
前一阵子在响应式开发中遇到了em和rem的问题,也上网搜过一些文章,篇幅很长,也没有仔细看,今天来总结一下. rem是指:根元素(root element,html)的字体大小, em是指:父元素的字 ...
- JVM实用参数(八)GC日志
本系列的最后一部分是有关垃圾收集(GC)日志的JVM参数.GC日志是一个很重要的工具,它准确记录了每一次的GC的执行时间和执行结果,通过分析GC日志可以优化堆设置和GC设置,或者改进应用程序的对象分配 ...
- 拥抱高效、拥抱 Bugtags 之来自用户的声音(三)
小编按:这是一篇 Bugtags 用户来稿,主要是介绍了使用 Bugtags 前后对测试及解决 Bug 所带来的变化,感谢山西农业大学 - 高正炎同学对 Bugtags 的信赖和支持.小编在这里诚邀各 ...
- 评论Final版本发布
1. 新蜂:俄罗斯方块 产品方面:俄罗斯方块在Beta版本基础上新增了许多功能,其中游戏中按A键可以开启瞄准,这个功能在市面上是具有先发优势的,算是一个较大的亮点:在改进了文字ui和方块的贴图以及游 ...
- Java项目往数据库中插入数据,出现中文乱码
项目环境: JSP+Servlet+Mysql数据库 需要检查的地方: 1. java项目整体的编码格式为utf-8.并且将数据传递给数据库之前,数据是否依旧是正常的(可以通过打断点的方式一步步跟踪查 ...
- Python单链表实现
class Node(): def __init__(self,InitDate): self.Date=InitDate self.next=None def setNext(self,newnex ...
- HDU 4003 [树][贪心][背包]
/* 大连热身A题 不要低头,不要放弃,不要气馁,不要慌张 题意: 给一棵树,每条边上有权值.给一个起点,放置n个机器人,要求使得任意一个节点至少被一个机器人经过. 每个机器人经过某条边时的代价为这条 ...
- prim算法查找最小生成树
我们在图的定义中说过,带有权值的图就是网结构.一个连通图的生成树是一个极小的连通子图,它含有图中全部的顶点,但只有足以构成一棵树的n-1条边.所谓的最小成本,就是n个顶点,用n-1条边把一个连通图连接 ...
- 高级搜索插件solis search在umbraco中的使用
好久没有写关于umbraco的博客了,这段时间在研究solis search,感觉它太强大,好东西是需要分享的,所以写一篇简单的使用博客分享给个人umbraco爱好者. 简介 在了解solis sea ...