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类(包括分页)的更多相关文章

  1. hibernate基础dao类

    此文章是基于 搭建SpringMVC+Spring+Hibernate平台 功能:数据库的保存.更新.删除:sql.hql查询:分页查询:调用存储过程 创建hibernate基础dao类: BaseD ...

  2. hibernate和struts2实现分页功能

    1.DAO层接口的设计,定义一个PersonDAO接口,里面声明了两个方法: public interface PersonDAO { public List<Person> queryB ...

  3. spring+hibernate实体类注解详解(非原创) + cascade属性取值

    @Entity //继承策略.另一个类继承本类,那么本类里的属性应用到另一个类中 @Inheritance(strategy = InheritanceType.JOINED ) @Table(nam ...

  4. .net通用CMS快速开发框架——问题1:Dapper通用的多表联合分页查询怎么破?

    最近在弄一个东东,类似那种CMS的后台管理系统,方便作为其它项目的初始化框架用的. 现在遇到个问题,如标题所示:Dapper通用的多表联合分页查询怎么破? 难道只能通过拼接sql或者使用存储过程吗?我 ...

  5. (转) Eclipse通过HibernateTools实现逆向生成Hibernate实体类

    背景:工作中使用Hibernate进行持久化的开发工作,所以有必要详细了解这方面的知识. ps:这里有个问题就是刷新表的时候速度太慢了.还不如自己手动去创建.如果表太多倒是可以采取批量生成的策略. 在 ...

  6. liferay总结的通用的工具类

    在写增删改查的时候,自己动手写了几个通用的工具类,这几个通用的工具类也是基于API写的 第一个是liferay中的分页.跟我们做普通的web开发,分页是一样的首先需要建立一个分页的实体的类 packa ...

  7. 解决hibernate对Sql Server分页慢的问题

    一.hibernate分页 hibernate对MsSql的伪分页 分页是web项目中比不可少的一个功能,数据量大的时候不能全部展示必然要用到分页技术.相信大家对hibernate中的分页都不陌生: ...

  8. 利用JAVA反射机制设计通用的DAO

    利用JAVA反射机制设计一个通用的DAO 反射机制 反射机制指的是程序在运行时能够获取自身的信息.在java中,只要给定类的名字,    那么就可以通过反射机制来获得类的所有信息. 反射机制创建类对象 ...

  9. (转) Hibernate持久化类与主键生成策略

    http://blog.csdn.net/yerenyuan_pku/article/details/65462930 Hibernate持久化类 什么是持久化类呢?在Hibernate中持久化类的英 ...

随机推荐

  1. 在Eclipse中使用JUnit4进行单元测试(初级篇)

    首先,我们来一个傻瓜式速成教程,不要问为什么,Follow Me,先来体验一下单元测试的快感! 首先新建一个项目叫JUnit_Test,我们编写一个Calculator类,这是一个能够简单实现加减乘除 ...

  2. 生成均值文件mean.binaryproto

    [感谢:http://www.cnblogs.com/denny402/p/5102328.html] compute_image_mean.bin生成均值文件mean.binaryproto: ca ...

  3. DevExpress TreeList 全选和反选 z

    /// <summary> /// 全选树 /// </summary> /// <param name="tree">树控件</para ...

  4. 成功部署SSIS中含有Oracle数据库连接的ETL包

    RT,正式写之前,我想说,真TMD不容易!!! 写博客,责任心,很重要 在百度搜出来的内地博客技术文章(CSDN.ITEYE.CNBLOGS……),大部分都是不全面,只针对一个遇到的问题点的记录,可以 ...

  5. Sublime Text

    今天在网上找了个Sublime Text 3 Build 3065 的 license key .在最新的Build 3083 下可以使用,记录下. ----- BEGIN LICENSE ----- ...

  6. Nice Validator(Form验证)及Juery zTree控件

    http://niceue.com/validator/demo/match.php http://www.ztree.me/v3/demo.php#_603

  7. oracle 执行 delete user$ 误删所有用户信息后的数据恢复流程

    起因: 在oracle测试过程中,不小心执行了delete user$ 命令,导致oracle当前实例所有的用户信息丢失,包括sys用户. 第一次使用DUL工具数据恢复:失败 下载ParnassusD ...

  8. BIOS设置之UEFI/Legacy BIOS切换图文详解

    近几年出现的电脑其中相当一部分都配置了UEFI BIOS,不过大多都默认以Legacy BIOS方式启动.而Win8正式上市后, 所有预装Win8(或Win8.1)的电脑都配置了UEFI BIOS并且 ...

  9. 关于android 5.0对开发带来的影响

    由于google推出了android5.0的系统,在app的安装方式,权限的管理方面与之前的系统有较大的区别.自己做的app也有体会.现在记录一些要注意的东西,防止忘记: 1.5.0改变了对自定义权限 ...

  10. Ping出现TTL expired in transit的原因

    今天上班检查服务器时发现出现TTL expired in transit的提示,这种提示还是第一次见,如图: ping 和 tracert 的结果 用tracert来看路由状况,原来是出现路由环路导致 ...