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. bug_ _

    java.lang.SecurityException: Not allowed to bind to service I app中加了百度定位功能,大部分手机测试没问题,但有部分手机会定位失败,提示 ...

  2. 基于Autofac, Castle.DynamicProxy的动态WCF解决方案(原创)

    本方案解决了下面3个主要的问题: 1.减少配置,为了避免每次新增service都需要去修改配置文件,包括服务器端跟各个客户端的. 2.能够使用函数重载,泛型函数,以及泛型类. 3.使项目能够快速地在w ...

  3. 百度地图API功能集锦

    1.点个数太多导致加载缓慢的解决. 2.可视化区域内加载的解决. 3.自定义信息窗口解决. 4.区域/板块/商圈等的绘制功能解决. 基本包含了用到百度地图API会使用到的大部分常规性场景.(聚合点功能 ...

  4. 转mysql 多表 update sql语句总结

    mysql 多表 update 有几种不同的写法. 假定我们有两张表,一张表为Product表存放产品信息,其中有产品价格列Price:另外一张表是ProductPrice表,我们要将ProductP ...

  5. delphi 调用百度地图api

    一.调用javascript的方法 两种: 第一种:采用自编函数的方法 function ExecuteJavaScript(WebBrowser:TWebBrowser; Code: string) ...

  6. about Internet protocol

    <1> SSL版本 测试浏览器支持的SSL版本的网站: https://www.ssllabs.com/ssltest/viewMyClient.html 0xfefd    (DTLS ...

  7. SpringMVC国际化

    如何将我们网站的其它内容(如菜单.标题等)做国际化处理呢?这就是本篇要将的内容->国际化. 一.基于浏览器请求的国际化实现: 首先配置我们项目的springservlet-config.xml文 ...

  8. ESET使用

    杀毒软件换了好几次,小红伞到ESET,感觉小红伞也可以但是就是更新上一直有些问题,所以狠心换成了ESET,这个安全套装感觉还是有模有样的.

  9. Extjs 百度地图扩展

    var bmapps; Bsprint.EditMapInfoWindow = Ext.extend(Ext.Window, { form: null, constructor: function ( ...

  10. js table的笔记,实现添加 td,实现搜索功能

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta http ...