⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 objectdaosheimpl.java

📁 人力资源管理系统
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
package org.HumResManSys.dao.impl;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;

import org.HumResManSys.dao.ObjectDAO;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.hibernate.Criteria;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.criterion.Example;
import org.hibernate.criterion.MatchMode;
import org.hibernate.criterion.Order;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;

//增加事务,缓存能力,提供DetachedCriteria,saveOrUpdate,报表projection等更多查询功能

public class ObjectDAOSHEImpl extends HibernateDaoSupport implements ObjectDAO{
	Log log=LogFactory.getLog(this.getClass().getName());
//	private HibernateSessionFactory hibernateSessionFactory
//	                  =new HibernateSessionFactory();
//	private org.hibernate.SessionFactory sessionFactory;
	private final ThreadLocal<Session> threadLocal = new ThreadLocal<Session>();
//	private Session session;
	private Object object;
	private boolean isTransaction=true;
	private boolean isCache=false;
	private String orderType="asc";
	
	public ObjectDAOSHEImpl(){
	}
	public ObjectDAOSHEImpl(Object object){
		this.object=object;
	}
	
	
//	按ID查找对象	 
	public  Object queryOneObjectByID(String id){
		List list=null;
		try{
			Session session=this.getCurrentSession();
			if(isTransaction)session.beginTransaction();
			String HQL="from "+object.getClass().getName()+" where id= ?";
			Query query = session.createQuery(HQL);
			query.setParameter(0, id);
			if(isCache)query.setCacheable(true);
			Object obj=query.list().get(0);
			if(isTransaction)session.getTransaction().commit();
			return obj;
		
		}catch(Exception e){
			e.printStackTrace();
			log.error("DAO queryOneObjectByID error\n");
			return null;
		}
	}
	
	  //按条件查找一个对象	 
	public  Object queryOneObjectByCondition(String conditionName,String conditionValue){
		try{
			Session session=this.getCurrentSession();
			if(isTransaction)session.beginTransaction();
			//添加查询条件
			String HQL="from "+object.getClass().getName()+" where "+ conditionName + "= ?";
			Query query = session.createQuery(HQL);
			query.setParameter(0, conditionValue);
			if(isCache)query.setCacheable(true);
			Object obj=query.list().get(0);
			if(isTransaction)session.getTransaction().commit();
		return obj;

	}catch(Exception e){
		e.printStackTrace();		
		log.error("DAO queryOneObjectByCondition error\n");
		return null;
	}
}
	
//	查找所有对象	
	public  List queryAllObjects(){
		List list=null;
		try{
			//获得session
			Session session=this.getCurrentSession();
			if(isTransaction)session.beginTransaction();
			//利用Criteria查询
			Criteria criteria=session.createCriteria(object.getClass());			
			if(isCache)criteria.setCacheable(true);
			list=criteria.list();
			if(isTransaction)session.getTransaction().commit();
		}catch(Exception e){
			e.printStackTrace();
			log.info("DAO queryAllObject error\n");
		}
		return list;
	}
	
//	查找所有对象,返回时按条件排序	
	public  List queryAllObjectsOrderByCondition(String conditionName){
		List list=null;
		try{
			Session session=this.getCurrentSession();
			if(isTransaction)session.beginTransaction();
			Criteria criteria=session.createCriteria(object.getClass());
			if("asc".equalsIgnoreCase(orderType)){
				criteria.addOrder(Order.asc(conditionName));
			}else if("desc".equalsIgnoreCase(orderType)){
				criteria.addOrder(Order.desc(conditionName));
			}
			if(isCache)criteria.setCacheable(true);
			list=criteria.list();
			if(isTransaction)session.getTransaction().commit();
		}catch(Exception e){
			e.printStackTrace();
			log.info("DAO queryAllObjectsOrderByCondition error\n");
		}
		return list;
	}
	
	
  //按属性查找对象	
	public  List queryObjectsByCondition(String conditionName,String conditionValue){
		List list=null;
		try{
			Session session=this.getCurrentSession();
			if(isTransaction)session.beginTransaction();
			//添加查询条件
			String HQL="from "+object.getClass().getName()+" where "+ conditionName + "= ?";
				Query query = session.createQuery(HQL);
				query.setParameter(0, conditionValue);
			if(isCache)query.setCacheable(true);
			list=query.list();
			if(isTransaction)session.getTransaction().commit();
		}catch(Exception e){
			e.printStackTrace();		
			log.info("DAO queryObjectsByCondition error\n");
		}
		return list;
	}
	  //按属性查找对象,并且排序	
	public  List queryObjectsByConditionOrderByCondition(String conditionName,String conditionValue,String orderConditionName){
		List list=null;
		try{
			Session session=this.getCurrentSession();
			if(isTransaction)session.beginTransaction();
			//添加查询条件
			String HQL="from "+object.getClass().getName()+" where "+conditionName+"= ? order by "+orderConditionName+" "+orderType;
			Query query = session.createQuery(HQL);
			query.setParameter(0, conditionValue);
			if(isCache)query.setCacheable(true);
			list=query.list();
			if(isTransaction)session.getTransaction().commit();
		}catch(Exception e){
			e.printStackTrace();		
			log.info("DAO queryObjectsByConditionOrderByCondition error\n");
		}
		return list;
	}
	
  //按实体类来查找对象
	public List queryObjectsByEntity(Object entity){
		List list=null;
		try{
			Session session=this.getCurrentSession();
			if(isTransaction)session.beginTransaction();
			Example example=Example.create(entity).excludeZeroes();
			Criteria criteria=session.createCriteria(object.getClass()).add(example);
			if(isCache)criteria.setCacheable(true);
			list=criteria.list();
			if(isTransaction)session.getTransaction().commit();
		}catch(Exception e){
			e.printStackTrace();
			log.info("DAO queryObjectsByEntity error\n");
		}
		return list;
	}
//	按实体类来查找对象,忽略各个属性的大小写,返回List
	public List queryObjectsByEntityIgnoreCase(Object entity){
		List list=null;
		try{
			Session session=this.getCurrentSession();
			if(isTransaction)session.beginTransaction();
			Example example=Example.create(entity).ignoreCase().excludeZeroes();
			Criteria criteria=session.createCriteria(object.getClass()).add(example);
			if(isCache)criteria.setCacheable(true);
			list=criteria.list();
			if(isTransaction)session.getTransaction().commit();
		}catch(Exception e){
			e.printStackTrace();
			log.info("DAO queryOneObjectByEntityIgnoreCase error\n");
		}
		return list;
	}
//	按实体类来查找对象,各个属性模糊查找,返回List
	public List queryObjectsByEntityEnableLike(Object entity){
		List list=null;
		try{
			Session session=this.getCurrentSession();
			if(isTransaction)session.beginTransaction();
			Example example=Example.create(entity).excludeZeroes().ignoreCase().enableLike(MatchMode.ANYWHERE);
			Criteria criteria=session.createCriteria(object.getClass()).add(example);
			if(isCache)criteria.setCacheable(true);
			list=criteria.list();
			if(isTransaction)session.getTransaction().commit();
		}catch(Exception e){
			e.printStackTrace();
			log.info("DAO queryOneObjectByEntityEnableLike error\n");
		}finally{
			
		}
		return list;
	}

//	分页查询,查询结果按指定的条件排序
	public List queryObjectsByPageOrderByCondition(String conditionName,int firstResult,int maxResults){
		List list=null;
		try{
			Session session=this.getCurrentSession();
			if(isTransaction)session.beginTransaction();
		    Criteria criteria=session.createCriteria(object.getClass());
			if("asc".equalsIgnoreCase(orderType)){
				criteria.addOrder(Order.asc(conditionName));
			}else if("desc".equalsIgnoreCase(orderType)){
				criteria.addOrder(Order.desc(conditionName));
			}
			if(isCache)criteria.setCacheable(true);
		    list=criteria.setFirstResult(firstResult).setMaxResults(maxResults).list();
		    if(isTransaction)session.getTransaction().commit();
		}catch(Exception e){
			e.printStackTrace();
			log.info("DAO queryObjectsByPageOrderByCondition error\n");
		}
		return list;
	}
	
	public List queryObjectsByMap(Map map){
		List list=null;
		try{
			Session session=this.getCurrentSession();		
			if(isTransaction)session.beginTransaction();
			StringBuffer hql=new StringBuffer("from "+object.getClass().getName()+" where");
			List<Object> values=new ArrayList<Object>();
			Set set=map.keySet();
			Iterator it=set.iterator();
			int i=0;
			while(it.hasNext()){				
				String key=(String)it.next();
				Object value=map.get(key);
				values.add(value);
				if(i==0){
					hql.append(" "+key+"=?");

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -