数据查询

package common.interfaces.impl;

import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;

import org.hibernate.Query;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;

import com.hikvision.test.usermanager.common.interfaces.BaseDao;

/**
 * Dao超类
 * @author alex
 *
 */
public class BaseDaoImpl extends HibernateDaoSupport implements BaseDao {

	/**
	 * 添加一条数据
	 */
	public boolean add(Object obj) {
		try {
			getHibernateTemplate().save(obj);
			return true;
		} catch (Exception e) {
			return false;
		}
	}

	/**
	 * 删除一条数据
	 */
	public boolean delete(Object obj) {
		try {
			getHibernateTemplate().delete(obj);
			return true;
		} catch (Exception e) {
			return false;
		}
	}
	
	/**
	 * 删除一组数据
	 */
	public boolean deleteAll(List<?> list) {
		try {
			getHibernateTemplate().deleteAll(list);
			return true;
		} catch (Exception e) {
			return false;
		}
	}

	/**
	 * 通过主键删除一条数据
	 */
	@SuppressWarnings("unchecked")
	public boolean deleteById(Class model, int id) {
		Object obj = findById(model, id);
		if (obj == null) {
			return false;
		} else {
			getHibernateTemplate().delete(obj);
			return true;
		}
	}

	/**
	 * 获得所有数据
	 */
	@SuppressWarnings("unchecked")
	public List<?> findAll(Class model) {
		return getHibernateTemplate().find("from " + model.getSimpleName());
	}

	/**
	 * 通过id获得对应的那条数据
	 */
	@SuppressWarnings("unchecked")
	public Object findById(Class model, int id) {
		return getHibernateTemplate().get(model.getName(), id);
	}

	/**
	 * 通过单属性获得对应的所有数据
	 */
	@SuppressWarnings("unchecked")
	public List<?> findByProperty(Class model, String propertyName,
			Object propertValue) {
		String query = "from " + model.getSimpleName() + " as m where m." + propertyName
			+ "=?";
		System.out.println("*********" + query + "***********" + propertValue);
		return getHibernateTemplate().find(query, propertValue);
	}
	
	/**
	 * 通过多属性获得对应的所有数据
	 */
	@SuppressWarnings("unchecked")
	public List<?> findByMulProperty(Class model, String[] propertyName, Object[] propertValue) {
		String query = "from " + model.getSimpleName() + " as m where m." + propertyName[0]
		+ "=? and m." + propertyName[1] + "=?";
		System.out.println("*********" + query + "***********" + propertValue);
		return getHibernateTemplate().find(query, propertValue);
	}

	/**
	 * 模糊查询
	 */
	@SuppressWarnings("unchecked")
	public List<?> findByLikeQuery(Class model, String propertyName, String str) {
		String query = "from " + model.getSimpleName() + " as m where m." + propertyName
			+ " like '" + str + "%'";
		System.out.println("*********" + query + "***********");
		return getHibernateTemplate().find(query);
	}
	
	/**
	 * 查询数据的总条数
	 */
	@SuppressWarnings("unchecked")
	public Integer getRows(Class model) {
		StringBuffer hql = new StringBuffer();
	    hql.append("select count(m) from " + model.getSimpleName());
	    Query query = this.getSession().createQuery(hql.substring(0));
	    return (Integer)query.uniqueResult();
	}

	/**
	 * 修改特定数据
	 */
	public boolean update(Object obj) {
		try {
			getHibernateTemplate().update(obj);
			return true;
		} catch (Exception e) {
			return false;
		}
	}
	
	
	
	/**
	 * 查询符合条件的数据条数
	 */
	@SuppressWarnings("unchecked")
	public Integer getRows(Class model, String hql, Map map) {
		hql = "select count(m) from " + model.getSimpleName() + " m" + hql;
		StringBuilder strHql = new StringBuilder(hql);
		if (map.size() != 0) {
			if (hql.indexOf("where") == -1) {
				strHql.append(" where ");
			} else {
				strHql.append(" and ");
			}
			
			Iterator<Entry<String,Object>> it = map.entrySet().iterator();
			int flag = 0;
	        while(it.hasNext()) {
	        	Entry<String,Object> entry = it.next();
	        	if (flag == 1) {
	        		strHql.append(" and");
	        	}
	        	flag = 1;
	        	if ("m.nRegionId".equals(entry.getKey())) {
	        		strHql.append(" " + entry.getKey() + "=" + entry.getValue());
	        	} else {
	        		strHql.append(" " + entry.getKey() + "='" + entry.getValue() + "'");
	        	}
	        }    
		}
		Query query = this.getSession().createQuery(strHql.toString());
		long total = (Long) query.uniqueResult();
	    return (int) total;
	}
	
	/**
	 * 分页查询符合所有条件的记录
	 * 
	 * @param pageNo 当前页数
	 * @param pageSize 每页显示的条数
	 * @param hql 查询语句
	 * @return 查询结果
	 */
	@SuppressWarnings("unchecked")
	public List<?> findPageByQuery(int pageNo, int pageSize, String hql, Map map) {
		List<Object[]> result = null;
	    try {  
	    	StringBuilder strHql = new StringBuilder(hql);
	        if (map.size() != 0) {
		        Iterator<Entry<String,Object>> it = map.entrySet().iterator();
		        while(it.hasNext()) {
		        	Entry<String,Object> entry = it.next();
		        	if ("m.nRegionId".equals(entry.getKey())) {
		        		strHql.append(" and " + entry.getKey() + "=" + entry.getValue());
		        	} else {
		        		strHql.append(" and " + entry.getKey() + "='" + entry.getValue() + "'");
		        	}
		        }    
	        }
	        Query query = this.getSession().createQuery(strHql.toString());
	        query.setFirstResult((pageNo-1)*pageSize);
	        query.setMaxResults(pageSize);
	        result = query.list();
	    } catch(RuntimeException re) {  
	    	re.printStackTrace();
	    }
	    return result;
	}

}

多表联查的时候最好不要超过两张表


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值