📄 objectdaosheimpl.java
字号:
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 + -