Hibernate通用的baseDao

本文介绍了一个基于Hibernate的通用DAO接口及其实现类的设计方案,该方案提供了多种数据库操作方法,如增删改查等,并支持HQL和SQL查询,便于进行高效的数据处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

IBaseDao

/**
*
*/

package zhenjw.hibernate.dao;

import java.util.Collection;
import java.util.List;

import org.hibernate.Session;

/**
* @author zhenjw
*
*/
public interface IBaseDao {

/**
* 功能:获得数据库连接的Session
*
* @return Session
*/
public Session getSession();

/**
* 功能:根据hql语句得到记录总数
*
* @param strhql
* @return int
*/
public int getTotalCount(String strhql);

/**
* 功能:根据sql语句得到记录总数
*
* @param strsql
* @return int
*/
public int getTotalCountBySql(String strsql);

/**
* 功能:根据hql语句得到记录总数
*
* @param strhql
* @param obj
* @return int
*/
public int getTotalCount(String strhql, Object obj);


/**
* 功能:根据hql语句得到记录总数
* @param strhql
* @param params
* @return int
*/
public int getTotalCount(String strhql, List params);

/**
* 功能:根据sql语句得到记录总数
* @param strsql
* @param param
* @return
*/
public int getTotalCountBySql(String strsql, List params);



/**
* 功能:增加记录
*
* @param entity
*/
public void create(Object entity);

/**
* 功能:修改记录
*
* @param entity
*/
public void update(Object entity);

/**
* 功能:删除记录
*
* @param entity
*/
public void delete(Object entity);

/**
* 功能:删除数据
*
* @param clazz
* @param id
*/
public void delete(Class clazz, long id);

/**
* 功能:批量删除数据
*
* @param clazz
* @param id
*/
public void batchDelete(Class clazz, long[] id);

/**
* 功能:删除表中的所有的记录
*
* @param clazz
*/
public void deleteAll(Class clazz);

/**
* 功能:删除记录集中的所有的记录
*
* @param entities
*/
public void deleteAll(Collection entities);;

/**
* 功能:通过主键查询记录
*
* @param clazz
* @param id
* @return Object
*/

public Object getByPk(Class clazz, int id);

/**
* 功能:通过主键查询记录
*
* @param clazz
* @param id
* @return Object
*/
public Object getByPk(Class clazz, long id);

/**
* 功能:通过主键查询记录
*
* @param clazz
* @param id
* @return Object
*/
public Object getByPk(Class clazz, String id);

/**
* 功能:通过关键字和值来进行查询
*
* @param clazz
* @param keyName
* @param keyValue
* @return 得到的Object是List
*/
public Object loadByPk(Class clazz, String keyName, Object keyValue);

/**
* 功能:根据hql查询记录
*
* @param strhql
* @return List
*/
public List find(String strhql);

/**
* 功能:根据hql查询记录
*
* @param strhql
* @param param
* @return List
*/
public List find(String strhql, Object param);

/**
* 功能:根据hql查询记录
*
* @param strhql
* @param name
* @param param
* @return List
*/
public List findByNamedParam(String strhql, String name, Object param);


/**
* 功能:SQL查询
* @param strsql
* @return
*/
public List findBySql(String strsql);

/**
* 功能:查询符合条件的记录。
* @param strsql
* @param params
* @return
*/
public List findBySql(String strsql,List params);

/**
* 功能:分页查询
*
* @param pageNo
* @param pageSize
* @param strhql
* @return List
*/
public List query(int pageNo, int pageSize, String strhql);

/**
* 功能:分页查询
*
* @param pageNo
* @param pageSize
* @param queryString
* @param obj
* @return List
*/
public List query(int pageNo, int pageSize, String strhql, Object obj);


/**
* 功能:分页查询
* @param pageNo
* @param pageSize
* @param strhql
* @param params
* @return
*/
public List query(int pageNo, int pageSize, String strhql, List params );



/**
* 功能:分页查询
*
* @param pageNo
* @param pageSize
* @param strsql
* @return List
*/
public List queryBySql(int pageNo, int pageSize, String strsql);

/**
* 功能:分页查询
* @param pageNo
* @param pageSize
* @param strsql
* @param params
* @return
*/
public List queryBySql(int pageNo, int pageSize, String strsql, List params) ;


/**
* 功能:执行SQL语句,主要是更新与删除记录的SQL语句,不需要返回值的
*
* @param strsql
*/
public void excuteSql(String strsql);

}



BaseDao



/**
*
*/
package zhenjw.hibernate.dao;

import java.util.Collection;
import java.util.Iterator;
import java.util.List;

import org.apache.log4j.Logger;
import org.hibernate.Query;
import org.hibernate.SQLQuery;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.criterion.Restrictions;

import zhenjw.hibernate.HibernateSessionFactory;


/**
* @author zhenjw
*
*/
public class BaseDao implements IBaseDao {

private Logger logger = Logger.getLogger(this.getClass());

// private Messages Messages=new Messages();

private String databeaseError = Messages
.getString("BaseDao.databeaseError");

private SessionFactory sessionFactory;


/* (non-Javadoc)
* @see zhenjw.hibernate.dao.IBaseDao#batchDelete(java.lang.Class, long[])
*/
public void batchDelete(Class clazz, long[] id) {
// TODO Auto-generated method stub

String strId = "";

for (int i = 0; i < id.length; i++) {

if (i > 0)

strId += ", " + id[i];

else

strId = "" + id[i];

}
logger.debug("batchDelete(Class, long[]) id[]={" + strId + "}");

for (int i = 0; i < id.length; i++) {

this.delete(clazz, id[i]);

}


}

/* (non-Javadoc)
* @see zhenjw.hibernate.dao.IBaseDao#create(java.lang.Object)
*/
public void create(Object entity) {
// TODO Auto-generated method stub

Session session = null;

Transaction tr = null;

boolean commitflag=false;

try {
session = this.getSession();

tr = session.beginTransaction();

session.save(entity);

tr.commit();

commitflag=true;

session.flush();

session.clear();

// super.getHibernateTemplate().save(entity);

logger.debug("保存" + entity.getClass().getName() + " 的实例到数据库成功!");

} catch (Exception e) {


String error = Messages.getString("BaseDao.create.saveError");

logger.debug("保存" + entity.getClass().getName() + " 的实例到数据库 ,"
+ error, e);

e.printStackTrace();

throw new DaoException(error);

} finally {

if(!commitflag)
{
try{

if (tr != null)

tr.rollback();

}catch(Exception e1)
{

logger.debug("事务",e1);

}
}

this.closeSession(session);

}


}

/* (non-Javadoc)
* @see zhenjw.hibernate.dao.IBaseDao#delete(java.lang.Object)
*/
public void delete(Object entity) {
// TODO Auto-generated method stub

logger.debug("delete(Object) entity.class="
+ entity.getClass().getName());

Session session = null;

Transaction tr = null;

boolean commitflag=false;

try {

session = this.getSession();

tr = session.getTransaction();

tr.begin();

session.delete(entity);

tr.commit();

commitflag=true;

session.flush();

session.clear();

} catch (Exception e) {

if (tr != null)

tr.rollback();

String Error = Messages.getString("BaseDao.delete.Error");

logger.debug(Error + " Class=" + entity.getClass().getName(), e);

throw new DaoException(Error);
} finally {

if(!commitflag)
{
try
{
if (tr != null)

tr.rollback();

}catch(Exception e)
{
e.printStackTrace();
}
}

this.closeSession(session);

}

}

/* (non-Javadoc)
* @see zhenjw.hibernate.dao.IBaseDao#delete(java.lang.Class, long)
*/
public void delete(Class clazz, long id) {
// TODO Auto-generated method stub

logger.debug("ClassName=" + clazz.getName() + " ,id=" + id);

try {

Object entity = this.getByPk(clazz, id);

if (entity != null)

this.delete(entity);

else

logger.debug(clazz.getName() + " 的关键字为 " + id + " 的对象不存在 ");

} catch (Exception e) {

logger.debug(" delete(Class, long) excute is error . Error="
+ e.toString());

throw new DaoException(Messages.getString("BaseDao.delete.Error"));

}

}

/* (non-Javadoc)
* @see zhenjw.hibernate.dao.IBaseDao#deleteAll(java.lang.Class)
*/
public void deleteAll(Class clazz) {
// TODO Auto-generated method stub

logger.debug("deleteAll(Class) ClassName=" + clazz.getName());

Session session = null;

Transaction tr = null;

boolean commitflag=false;

try {

session = this.getSession();

tr = session.beginTransaction();

Query query = session.createQuery(" delete from "
+ clazz.getName());

query.executeUpdate();

tr.commit();

commitflag=true;

session.flush();

} catch (Exception e) {

String Error = Messages.getString("BaseDao.delete.Error");

logger.debug("从数据库中删除" + clazz.getName() + "的所有实例失败!", e);

throw new DaoException(Error);

} finally {

if(!commitflag)
{
try
{
if (tr != null)

tr.rollback();

}catch(Exception e)
{
e.printStackTrace();
}
}

this.closeSession(session);

}

}

/* (non-Javadoc)
* @see zhenjw.hibernate.dao.IBaseDao#deleteAll(java.util.Collection)
*/
public void deleteAll(Collection entities) {
// TODO Auto-generated method stub

Session session = null;

Transaction tr = null;

boolean commitflag=false;

try {

session = this.getSession();

tr = session.beginTransaction();

Iterator ite = entities.iterator();


while (ite.hasNext())

session.delete(ite.next());

// super.getHibernateTemplate().deleteAll(entities);
tr.commit();

commitflag=true;

session.flush();


} catch (Exception e) {

String error = Messages.getString("BaseDao.deleteAll.Error");

logger.debug(error, e);

throw new DaoException(error);

} finally {

if(!commitflag)
{
try
{
if (tr != null)

tr.rollback();

}catch(Exception e)
{
e.printStackTrace();
}
}

this.closeSession(session);

}



}

/* (non-Javadoc)
* @see zhenjw.hibernate.dao.IBaseDao#excuteSql(java.lang.String)
*/
public void excuteSql(String strsql) {
// TODO Auto-generated method stub

logger.debug("excuteSql(String) strsql=" + strsql);

Session session = null;

Transaction tr = null;

boolean commitflag=false;

try {

session = this.getSession();

tr = session.beginTransaction();

SQLQuery query = session.createSQLQuery(strsql);


query.executeUpdate();

tr.commit();

commitflag=true;

session.flush();

// super.getHibernateTemplate().update(entity);

} catch (Exception e) {



String Error = Messages.getString("BaseDao.excuteSql.Error");

logger.debug(Error, e);

throw new DaoException(Error);

} finally {

if(!commitflag)
{
try
{
if (tr != null)

tr.rollback();

}catch(Exception e)
{
e.printStackTrace();
}
}

this.closeSession(session);

}



}

/* (non-Javadoc)
* @see zhenjw.hibernate.dao.IBaseDao#find(java.lang.String)
*/
public List find(String strhql) {
// TODO Auto-generated method stub

List result = null;

logger.debug("find(String) queryString=" + strhql);

Session session = null;

try {

// result = super.getHibernateTemplate().find(queryString);

session = this.getSession();

Query query = session.createQuery(strhql);

result = query.list();

} catch (Exception e) {

logger.debug("执行数据库中查询时失败,语句为:" + strhql, e);

throw new DaoException(databeaseError);

} finally {

this.closeSession(session);

}

return result;
}

/* (non-Javadoc)
* @see zhenjw.hibernate.dao.IBaseDao#find(java.lang.String, java.lang.Object)
*/
public List find(String strhql, Object param) {
// TODO Auto-generated method stub

logger.debug("find(String, Object) queryString=" + strhql
+ " ,param=" + param);

List result = null;

Session session = null;

try {

session = this.getSession();

Query query = session.createQuery(strhql);

query.setParameter(0, param);

result = query.list();

// result = super.getHibernateTemplate().find(queryString, param);

} catch (Exception e) {

logger.debug(databeaseError, e);

throw new DaoException(databeaseError);

} finally {

this.closeSession(session);

}

return result;

}

/* (non-Javadoc)
* @see zhenjw.hibernate.dao.IBaseDao#findByNamedParam(java.lang.String, java.lang.String, java.lang.Object)
*/
public List findByNamedParam(String strhql, String name, Object param) {
// TODO Auto-generated method stub


logger.debug("findByNamedParam(String, String, Object) strhql="
+ strhql + "name=" + name + " ,param=" + param);

List result = null;

Session session = null;

try {
session = this.getSession();

Query query = session.createQuery(strhql);

query.setParameter(name, param);

result = query.list();

// result =
// super.getHibernateTemplate().findByNamedParam(queryString,
// name, param);

} catch (Exception e) {

logger.debug(databeaseError, e);

throw new DaoException(databeaseError);

} finally {

this.closeSession(session);

}

return result;

}

/* (non-Javadoc)
* @see zhenjw.hibernate.dao.IBaseDao#findBySql(java.lang.String)
*/
public List findBySql(String strsql) {
// TODO Auto-generated method stub

logger.debug("exceuteSQL(String) strsql=" + strsql);

System.out.println(strsql);

Session session = null;

List result=null;


try {

session = this.getSession();

SQLQuery query = session.createSQLQuery(strsql);

result=query.list();

// super.getHibernateTemplate().update(entity);

} catch (Exception e) {

String Error = Messages.getString("BaseDao.exceuteSQL.Error");

logger.debug(Error, e);

throw new DaoException(Error);

} finally {

this.closeSession(session);

}

return result;
}

/* (non-Javadoc)
* @see zhenjw.hibernate.dao.IBaseDao#findBySql(java.lang.String, java.util.List)
*/
public List findBySql(String strsql, List params) {
// TODO Auto-generated method stub

String paramnameArray="";

if(params!=null)
{

for (int i = 0; i < params.size(); i++) {

if (i > 0)

paramnameArray += " , " + params.get(i);

else

paramnameArray = ""+params.get(i);

}

}

logger.debug("excuteSql(String, List) strsql="+strsql+" , List="+paramnameArray);

System.out.println(strsql);

List result =null;

Session session = null;

try {

session = this.getSession();


SQLQuery query = session.createSQLQuery(strsql);

if(params!=null)
{
for (int i = 0; i < params.size(); i++) {

query.setParameter(i, params.get(i));

}
}

result = query.list();

} catch (Exception e) {

String error = Messages.getString("BaseDao.findBySql.Error");

logger.debug(error, e);

e.printStackTrace();

throw new DaoException(error);

} finally {

this.closeSession(session);

}

return result;

}

/* (non-Javadoc)
* @see zhenjw.hibernate.dao.IBaseDao#getByPk(java.lang.Class, int)
*/
public Object getByPk(Class clazz, int id) {
// TODO Auto-generated method stub


logger.debug("getByPk(Class, Integer) class=" + clazz.getName()
+ " , ID=" + id);

Object result = null;

Session session = null;

try {

session = this.getSession();

result = session.get(clazz, new Integer(id));

} catch (Exception e) {

logger.debug(databeaseError, e);

throw new DaoException(databeaseError);

} finally {

this.closeSession(session);

}

return result;

}

/* (non-Javadoc)
* @see zhenjw.hibernate.dao.IBaseDao#getByPk(java.lang.Class, long)
*/
public Object getByPk(Class clazz, long id) {
// TODO Auto-generated method stub

logger.debug("getByPk(Class, Long) Class=" + clazz.getName() + ",id="
+ id);

Object result = null;

Session session = null;

try {
session = this.getSession();

result = session.get(clazz, new Long(id));

// (Object) super.getHibernateTemplate().get(clazz, id);

} catch (Exception e) {

logger.debug(databeaseError, e);

throw new DaoException(databeaseError);

} finally {

this.closeSession(session);

}

return result;
}

/* (non-Javadoc)
* @see zhenjw.hibernate.dao.IBaseDao#getByPk(java.lang.Class, java.lang.String)
*/
public Object getByPk(Class clazz, String id) {
// TODO Auto-generated method stub

logger.debug("getByPk(Class, String) Class=" + clazz.getName() + ",id="
+ id);

Object result = null;

Session session = null;

try {

session = this.getSession();

result = session.get(clazz, id);

// result = (Object) super.getHibernateTemplate().get(clazz, id);

} catch (Exception e) {

logger.debug(databeaseError, e);

throw new DaoException(databeaseError);

} finally {

this.closeSession(session);

}

return result;

}

/* (non-Javadoc)
* @see zhenjw.hibernate.dao.IBaseDao#getSession()
*/
public Session getSession() {
// TODO Auto-generated method stub

return HibernateSessionFactory.getSession();

}

/* (non-Javadoc)
* @see zhenjw.hibernate.dao.IBaseDao#getTotalCount(java.lang.String)
*/
public int getTotalCount(String strhql) {
// TODO Auto-generated method stub

logger.debug("getTotalCount() strhql=" + strhql);

int result = 0;

Session session = null;

try {

String strsql = this.getQueryTotalCountString(strhql);

session = this.getSession();

Query query = session.createQuery(strsql);

List list = query.list();

result = this.getNum(list);

} catch (Exception e) {

logger.debug(databeaseError, e);

throw new DaoException(databeaseError);

} finally {

this.closeSession(session);

}

return result;

}

/* (non-Javadoc)
* @see zhenjw.hibernate.dao.IBaseDao#getTotalCount(java.lang.String, java.lang.Object)
*/
public int getTotalCount(String strhql, Object obj) {
// TODO Auto-generated method stub

logger.debug("getTotalCount(String,Object) strhql=" + strhql
+ "" + obj.getClass().getName());

int result = 0;

Session session = null;

try {

String strsql = this.getQueryTotalCountString(strhql);

//System.out.println(strsql);

logger.debug("strsql="+strsql);

session = this.getSession();

Query query = session.createQuery(strsql);

List list = query.setProperties(obj).list();

result = this.getNum(list);


} catch (Exception e) {

String error = Messages.getString("BaseDao.getTotalCount.Error");

logger.debug(error, e);

e.printStackTrace();

throw new DaoException(error);

} finally {

this.closeSession(session);

}

return result;
}

/* (non-Javadoc)
* @see zhenjw.hibernate.dao.IBaseDao#getTotalCount(java.lang.String, java.util.List)
*/
public int getTotalCount(String strhql, List params) {
// TODO Auto-generated method stub

String paramnameArray="";

if(params!=null)
{

for (int i = 0; i < params.size(); i++) {

if (i > 0)

paramnameArray += " , " + params.get(i);

else

paramnameArray = ""+params.get(i);

}

}

logger.debug("getTotalCount(String, List) strhql="+strhql+" , List="+paramnameArray);


int result = 0;

Session session = null;

try {

String strquery = this.getQueryTotalCountString(strhql);

//System.out.println(strsql);

session = this.getSession();

logger.debug("strquery=="+strquery);

Query query = session.createQuery(strquery);

if(params!=null)
{
for (int i = 0; i < params.size(); i++) {

query.setParameter(i, params.get(i));

}
}

List list = query.list();

result = this.getNum(list);


} catch (Exception e) {

String error = Messages.getString("BaseDao.getTotalCount.Error");

logger.debug(error, e);

e.printStackTrace();

throw new DaoException(error);

} finally {

this.closeSession(session);

}

return result;
}

/* (non-Javadoc)
* @see zhenjw.hibernate.dao.IBaseDao#getTotalCountBySql(java.lang.String)
*/
public int getTotalCountBySql(String strsql) {
// TODO Auto-generated method stub

logger.debug("getTotalCountBySql(String) strsql=" + strsql);

int result = 0;

Session session = null;

try {

strsql = this.getQueryTotalCountString(strsql);

session = this.getSession();

logger.debug("strsql=="+strsql);

List list=session.createSQLQuery(strsql).list();

result = this.getNum(list);

} catch (Exception e) {

logger.debug(databeaseError, e);

throw new DaoException(databeaseError);

} finally {

this.closeSession(session);

}

return result;

}

/* (non-Javadoc)
* @see zhenjw.hibernate.dao.IBaseDao#getTotalCountBySql(java.lang.String, java.util.List)
*/
public int getTotalCountBySql(String strsql, List params) {
// TODO Auto-generated method stub

String paramnameArray="";

if(params!=null)
{

for (int i = 0; i < params.size(); i++) {

if (i > 0)

paramnameArray += " , " + params.get(i);

else

paramnameArray = ""+params.get(i);

}

}

logger.debug("getTotalCountBySql(String, List) strsql="+strsql+" , List="+paramnameArray);


int result = 0;

Session session = null;

try {

strsql = this.getQueryTotalCountString(strsql);

logger.debug("strsql=="+strsql);

session = this.getSession();

SQLQuery query = session.createSQLQuery(strsql);

if(params!=null)
{
for (int i = 0; i < params.size(); i++) {

query.setParameter(i, params.get(i));

}
}

List list = query.list();

result = this.getNum(list);


} catch (Exception e) {

String error = Messages.getString("BaseDao.getTotalCount.Error");

logger.debug(error, e);

e.printStackTrace();

throw new DaoException(error);

} finally {

this.closeSession(session);

}

return result;

}

/* (non-Javadoc)
* @see zhenjw.hibernate.dao.IBaseDao#loadAll(java.lang.String)
*/
public List loadAll(String strhql) {
// TODO Auto-generated method stub
return this.find(strhql);
}

/* (non-Javadoc)
* @see zhenjw.hibernate.dao.IBaseDao#loadByPk(java.lang.Class, java.lang.String, java.lang.Object)
*/
public Object loadByPk(Class clazz, String keyName, Object keyValue) {
// TODO Auto-generated method stub

Object result = null;

String query = "from " + clazz.getName() + " where " + keyName + "=? ";

logger.debug("loadByPk(Class, String, Object) queryString=" + query
+ " ,keyValue=" + keyValue);

Session session = null;

try {

session = this.getSession();

result = session.createCriteria(clazz).add(
Restrictions.eq(keyName, keyValue)).list();


} catch (Exception e) {

logger.debug(databeaseError, e);

throw new DaoException(databeaseError);

} finally {

this.closeSession(session);

}

return result;

}

/* (non-Javadoc)
* @see zhenjw.hibernate.dao.IBaseDao#query(int, int, java.lang.String)
*/
public List query(int pageNo, int pageSize, String strhql) {
// TODO Auto-generated method stub

logger.debug("query(int, int, String) pageNo=" + pageNo + ",pageSize="
+ pageSize + " ,strhql=" + strhql);

List result = null;

Session session = null;

try {
session = this.getSession();

Query query = session.createQuery(strhql);
//System.out.println(queryString);

if (pageNo > 0 && pageSize > 0) {

query.setFirstResult((pageNo - 1) * pageSize);

query.setMaxResults(pageSize);
}

result = query.list();

//System.out.println()
} catch (Exception e) {

logger.debug(databeaseError, e);

throw new DaoException(databeaseError);

} finally {

this.closeSession(session);

}

return result;
}

/* (non-Javadoc)
* @see zhenjw.hibernate.dao.IBaseDao#query(int, int, java.lang.String, java.lang.Object)
*/
public List query(int pageNo, int pageSize, String strhql, Object obj) {
// TODO Auto-generated method stub

logger.debug("query(int, int, String, Object) pageNo=" + pageNo
+ ",pageSize=" + pageSize + "strhql="+strhql+" ,obj"
+ obj.getClass().getName());

List result = null;

Session session = null;

try {

session = this.getSession();

Query query = session.createQuery(strhql);

query.setProperties(obj);

if (pageNo > 0 && pageSize > 0) {

query.setFirstResult((pageNo - 1) * pageSize);

query.setMaxResults(pageSize);

}

result = query.list();

} catch (Exception e) {

logger.debug(databeaseError, e);

throw new DaoException(databeaseError);

} finally {

this.closeSession(session);

}

return result;

}

/* (non-Javadoc)
* @see zhenjw.hibernate.dao.IBaseDao#query(int, int, java.lang.String, java.util.List)
*/
public List query(int pageNo, int pageSize, String strhql, List params) {
// TODO Auto-generated method stub

logger.debug("query(int, int, String, Object) pageNo=" + pageNo + ",pageSize=" + pageSize + ",strhql="+strhql);

String paramnameArray="";

if(params!=null)
{

for (int i = 0; i < params.size(); i++) {

if (i > 0)

paramnameArray += " , " + params.get(i);

else

paramnameArray = ""+params.get(i);

}

}

logger.debug("params="+params);

List result = null;

Session session = null;

try {

session = this.getSession();

Query query = session.createQuery(strhql);

if(params!=null)
{
for (int i = 0; i < params.size(); i++) {

query.setParameter(i, params.get(i));

}
}

if (pageNo > 0 && pageSize > 0) {

query.setFirstResult((pageNo - 1) * pageSize);

query.setMaxResults(pageSize);

}

result = query.list();

} catch (Exception e) {

logger.debug(databeaseError, e);

throw new DaoException(databeaseError);

} finally {

this.closeSession(session);

}

return result;

}

/* (non-Javadoc)
* @see zhenjw.hibernate.dao.IBaseDao#queryBySql(int, int, java.lang.String)
*/
public List queryBySql(int pageNo, int pageSize, String strsql) {
// TODO Auto-generated method stub


logger.debug("query(int, int, String) pageNo=" + pageNo + ",pageSize="
+ pageSize + " ,strsql=" + strsql);

List result = null;

Session session = null;

try {

session = this.getSession();

SQLQuery query = session.createSQLQuery(strsql);

if (pageNo > 0 && pageSize > 0) {

query.setFirstResult((pageNo - 1) * pageSize);

query.setMaxResults(pageSize);

}

result = query.list();

} catch (Exception e) {

logger.debug(databeaseError, e);

throw new DaoException(databeaseError);

} finally {

this.closeSession(session);

}

return result;

}

/* (non-Javadoc)
* @see zhenjw.hibernate.dao.IBaseDao#queryBySql(int, int, java.lang.String, java.util.List)
*/
public List queryBySql(int pageNo, int pageSize, String strsql, List params) {
// TODO Auto-generated method stub

logger.debug("query(int, int, String, Object) pageNo=" + pageNo + ",pageSize=" + pageSize + " , strsql="+strsql);

String paramnameArray="";

if(params!=null)
{

for (int i = 0; i < params.size(); i++) {

if (i > 0)

paramnameArray += " , " + params.get(i);

else

paramnameArray = ""+params.get(i);

}

}

logger.debug("params="+params);

List result = null;

Session session = null;

try {

session = this.getSession();

SQLQuery query = session.createSQLQuery(strsql);

if(params!=null)
{
for (int i = 0; i < params.size(); i++) {

query.setParameter(i, params.get(i));

}
}

if (pageNo > 0 && pageSize > 0) {

query.setFirstResult((pageNo - 1) * pageSize);

query.setMaxResults(pageSize);

}

result = query.list();

} catch (Exception e) {

logger.debug(databeaseError, e);

throw new DaoException(databeaseError);

} finally {

this.closeSession(session);

}
return result;

}

/* (non-Javadoc)
* @see zhenjw.hibernate.dao.IBaseDao#update(java.lang.Object)
*/
public void update(Object entity) {
// TODO Auto-generated method stub

logger.debug("update(Object) entity.class="
+ entity.getClass().getName());

Session session = null;

Transaction tr = null;

try {
session = this.getSession();

tr = session.beginTransaction();

session.update(entity);

tr.commit();

session.flush();

session.clear();

// super.getHibernateTemplate().update(entity);

} catch (Exception e) {

if (tr != null)

tr.rollback();

String Error = Messages.getString("BaseDao.update.Error");

logger.debug(Error, e);

throw new DaoException(Error);

} finally {

this.closeSession(session);

}

}

/**
* 功能:关闭session
* @param session
*/
protected void closeSession(Session session) {

if (session != null && session.isOpen())

session.close();

session = null;

}

/**
* 功能:得到查询记录总数的语句(包含sql与hql)
* @param queryString
* @return
*/
private String getQueryTotalCountString(String queryString) {

int form_index = queryString.indexOf("from ");

int orderby_index = queryString.indexOf(" order by ");

if (form_index < 0) {

throw new DaoException(Messages
.getString("BaseDao.getTotalCount.notFromkeyword"));

}

String strsql = " select count(*) ";

if (orderby_index > -1) {

strsql = strsql + queryString.substring(form_index, orderby_index);

} else {

strsql = strsql + queryString.substring(form_index);
}

return strsql;
}

/**
* 功能:得到记录数的方法
* @param list
* @return
*/
protected int getNum(List list)
{

int result=0;

if (list != null || list.size() > 0)

result = Integer.parseInt(list.get(0).toString());

return result;
}



}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值