📄 basedao.java
字号:
package com.gsta.eshore.framework.dao;
import java.io.Serializable;
import java.sql.SQLException;
import java.util.Collection;
import java.util.List;
//import org.apache.log4j.Logger;
import org.hibernate.Criteria;
import org.hibernate.HibernateException;
import org.hibernate.LockMode;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.criterion.Example;
import org.hibernate.criterion.Projections;
import org.springframework.orm.hibernate3.HibernateCallback;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
import com.gsta.eshore.framework.daoutil.CriteriaQuery;
import com.gsta.eshore.framework.daoutil.HqlQuery;
import com.gsta.eshore.framework.daoutil.PageSupport;
import com.gsta.eshore.framework.util.page.PagerUtil;
/**
* DAO的基类
* @author hewenqiang Oct 10, 2006 3:56:41 PM
*
*/
public class BaseDao extends HibernateDaoSupport implements Dao{
//private static Logger logger = Logger.getLogger(BaseDao.class);
public BaseDao() {
super();
}
public void update(Object o) {
//logger.debug("update Object : "+o.getClass().getName());
getHibernateTemplate().update(o);
}
public void delete(Object o) {
//logger.debug("delete Object : "+o.getClass().getName());
getHibernateTemplate().delete(o);
}
public void deleteAll(Collection entities) {
//logger.debug("delete Object size is : "+entities.size());
getHibernateTemplate().deleteAll(entities);
}
public void saveOrUpdate(Object o) {
//logger.debug("saveOrUpdate Object : "+o.getClass().getName());
getHibernateTemplate().saveOrUpdate(o);
}
/**
* fullEntityName为类的全限定名
*/
public void delete(String fullEntityName,String id) {
Object o = (Object)getHibernateTemplate().get(fullEntityName, id);
if(o!=null){
delete(o);
}
}
public Serializable save(Object o) {
//logger.debug("save Object : "+o.getClass().getName());
return getHibernateTemplate().save(o);
}
public void save(Object o, Serializable id) {
//logger.debug("save Object : "+o.getClass().getName()+" id is : "+id);
getHibernateTemplate().save(o,id);
}
public boolean delete(Class c, Serializable id) {
//logger.debug("delete Class : "+c.getName()+" id is : "+id);
Object o = (Object)getHibernateTemplate().get(c, id);
if(o!=null){
delete(o);
return true;
}else{
return false;
}
}
public Object loadById(Class c, Serializable id) {
//logger.debug("load Class: "+c.getName()+" id is : "+id);
return getHibernateTemplate().load(c, id);
}
public Object getById(Class c, Serializable id) {
//logger.debug("get Class: "+c.getName()+" id is : "+id);
return getHibernateTemplate().get(c, id);
}
public List findAll(Class entity) {
//logger.debug("findAll Class: "+entity.getName());
return getHibernateTemplate().loadAll(entity);
}
public List find(String strHQL) {
//logger.debug("find List ,HQL is: "+strHQL);
return getHibernateTemplate().find(strHQL);
}
public List find(String strHQL,Object o) {
//logger.debug("find List ,HQL is: "+strHQL);
return getHibernateTemplate().find(strHQL,o);
}
public List find(String strHQL,Object[] o) {
//logger.debug("find List ,HQL is: "+strHQL);
return getHibernateTemplate().find(strHQL,o);
}
public List find(final String strHQL, final int offset, final int limit) {
//logger.debug("find List ,HQL is: "+strHQL +"offset = "+offset+ " limit = "+limit);
return (List)getHibernateTemplate().execute(
new HibernateCallback() {
public Object doInHibernate(Session session) throws HibernateException, SQLException {
Query query=session.createQuery(strHQL);
query.setFirstResult(offset);
query.setMaxResults(limit);
return query.list();
}
}
);
}
public List findBySql(final String strHQL) {
//logger.debug("findBySql List ,HQL is: "+strHQL );
return (List)getHibernateTemplate().execute(
new HibernateCallback() {
public Object doInHibernate(Session session) throws HibernateException, SQLException {
Query query=session.createSQLQuery(strHQL);
return query.list();
}
}
);
}
public PageSupport find(final HqlQuery hqlQuery,final boolean needParameter)
{
//logger.debug("find PageSupport ,HQL is: "+hqlQuery.getQueryString());
return (PageSupport)getHibernateTemplate().execute(
new HibernateCallback() {
public Object doInHibernate(Session session) throws HibernateException, SQLException {
Query query=session.createQuery(hqlQuery.getQueryString());
if(needParameter)
query.setParameters(hqlQuery.getParam(), hqlQuery.getTypes());
int allCounts=query.list().size();
int curPageNO = PagerUtil.getCurPageNO(hqlQuery.getCurPage());
int offset = PagerUtil.getOffset(allCounts, curPageNO, hqlQuery.getPageSize());
String toolBar = PagerUtil.getBar(hqlQuery.getMyaction(),allCounts,curPageNO,hqlQuery.getPageSize());
query.setFirstResult(offset);
query.setMaxResults(hqlQuery.getPageSize());
return new PageSupport(query.list(),toolBar,offset,curPageNO);
}
}
,true);
}
public PageSupport find(final CriteriaQuery cq,final boolean isOffset) {
return (PageSupport)getHibernateTemplate().execute(
new HibernateCallback() {
public Object doInHibernate(Session session) throws HibernateException, SQLException {
Criteria criteria = cq.getDetachedCriteria().getExecutableCriteria(session);
//得到总行数
int allCounts = ((Integer) criteria.setProjection(Projections.rowCount()).uniqueResult()).intValue();
criteria.setProjection(null);//还原
int curPageNO = PagerUtil.getCurPageNO(cq.getCurPage());// 当前页
int offset = PagerUtil.getOffset(allCounts, curPageNO, cq.getPageSize());
//String toolBar = PagerUtil.getBar(cq.getMyaction(),cq.getMyform(),allCounts,curPageNO,cq.getPageSize());
String toolBar = PagerUtil.getBar(cq.getMyaction(),allCounts,curPageNO,cq.getPageSize());
if(isOffset){
criteria.setFirstResult(offset);
criteria.setMaxResults(cq.getPageSize());
}
return new PageSupport(criteria.list(),toolBar,offset,curPageNO);
}
}
,true);
}
public List find(final CriteriaQuery cq) {
//logger.debug("find(CriteriaQuery cq) start");
return (List)getHibernateTemplate().execute(
new HibernateCallback() {
public Object doInHibernate(Session session) throws HibernateException, SQLException {
return cq.getDetachedCriteria().getExecutableCriteria(session).list();
}
}
,true);
}
public List findByExample(final Object example,final Class instance) {
return (List)getHibernateTemplate().execute(
new HibernateCallback() {
public Object doInHibernate(Session session) throws HibernateException, SQLException {
Criteria criteria=session.createCriteria(instance).add(Example.create(example));
return criteria.list();
}
}
);
}
public int getAllCount(final CriteriaQuery cq) {
//logger.debug("getAllCount(CriteriaQuery cq) start");
Integer amount = new Integer(0);
List list= (List)getHibernateTemplate().execute(
new HibernateCallback() {
public Object doInHibernate(Session session) throws HibernateException, SQLException {
Criteria criteria = cq.getDetachedCriteria().getExecutableCriteria(session)
.setProjection(Projections.rowCount());
return criteria.list();
}
}
,true);
if (list!=null) {
amount = (Integer) list.get(0);
}
return amount.intValue();
}
public int getAllCount(final Class c) {
Integer amount = new Integer(0);
List list= (List)getHibernateTemplate().execute(
new HibernateCallback() {
public Object doInHibernate(Session session) throws HibernateException, SQLException {
Criteria criteria=session.createCriteria(c)
.setProjection(Projections.rowCount());
return criteria.list();
}
}
);
if (list!=null) {
amount = (Integer) list.get(0);
}
return amount.intValue();
}
public int getAllCount(String entityName) {
int amount = 0;
List list=null;
String strHQL = "select count(*) " + entityName;
//logger.debug("getAllCount : " + strHQL);
list = getHibernateTemplate().find(strHQL);
if (list!=null) {
amount = ((Integer)list.get(0)).intValue();
}
return amount;
}
public void flush() {
// logger.debug("flush starting");
getHibernateTemplate().flush();
}
public void clear() {
//logger.debug("clear starting");
getHibernateTemplate().clear();
}
public List findByExample(Object o) {
//logger.debug("findByExample "+o.getClass().getName());
return getHibernateTemplate().findByExample(o);
}
public Object merge(Object detachedInstance) {
//logger.debug("merging Object instance"+detachedInstance.getClass().getName());
return (Object) getHibernateTemplate().merge(detachedInstance);
}
public void attachDirty(Object instance) {
//logger.debug("attaching dirty Object instance");
getHibernateTemplate().saveOrUpdate(instance);
}
public void attachClean(Object instance) {
//logger.debug("attaching clean FriendLink instance"+instance.getClass().getName());
getHibernateTemplate().lock(instance, LockMode.NONE);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -