web項目抽取BaseDao

使用的Hibernate框架連接數據庫

第一步:創建BaseDao接口和BaseDaoImpl實現類

BadeDao接口

package cn.ex.dao;

import java.util.List;

public interface BaseDao<T> {
	//添加
	void save(T t);
	//刪除
	void delete(T t);
	//修改
	void update(T t);
	//根據ID查數據
	T findById(int id);
	//查詢所有數據
	List<T> findAll();
	
}
BaseDaoImpl實現類

package cn.ex.dao.impl;


import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;
import java.util.List;

import org.springframework.orm.hibernate4.support.HibernateDaoSupport;
import org.springframework.transaction.annotation.Transactional;

import cn.ex.dao.BaseDao;

@Transactional
@SuppressWarnings("all")
public class BaseDaoImpl<T> extends HibernateDaoSupport implements BaseDao<T> {
	private Class pClass;
	
	public BaseDaoImpl() {
		/*
		 * 獲取參數類型
		 * Class class=this.getClass();
		 * Type type=class.getGenericSuperclass();
		 * ParameterizedType  pType= (ParameterizedType)(type);
		 * Type[] types=pType.getActualTypeArguments();
		 * pClass=(Class<T>) types[0];
		 */
		pClass=(Class<T>)(((ParameterizedType)(this.getClass().getGenericSuperclass())).getActualTypeArguments()[0]);
	}

	//添加
	public void save(T t) {
		this.getHibernateTemplate().save(t);
	}
	//刪除
	public void delete(T t) {
		this.getHibernateTemplate().delete(t);
	}
	//修改
	public void update(T t) {
		this.getHibernateTemplate().saveOrUpdate(t);
	}
	//根據ID查詢對象
	public T findById(int id) {
		return (T) this.getHibernateTemplate().get(pClass, id);
	}

	//查詢所有數據
	public List<T> findAll() {
		String sql="from"+pClass; 
		return (List<T>) this.getHibernateTemplate().find(sql);
	}
	
}


第二步 分別繼承BaseDao接口和BaseDaoImpl類(以Customer類爲例)

CustomerDao接口

package cn.ex.dao;

import java.util.List;

import cn.ex.entity.Customer;

public interface CustomerDao extends BaseDao<Customer>{
	//多條件查詢
	List<Customer> findBy(Customer customer);
}
CustomerImpl實現類

package cn.ex.dao.impl;


import java.util.List;
import org.hibernate.criterion.DetachedCriteria;
import org.hibernate.criterion.Restrictions;
import org.springframework.transaction.annotation.Transactional;

import cn.ex.dao.CustomerDao;
import cn.ex.entity.Customer;

@Transactional
@SuppressWarnings("all")
public class CustomerDaoImpl extends BaseDaoImpl<Customer> implements CustomerDao {

	//多條件查詢

	public List<Customer> findBy(Customer customer) {
		DetachedCriteria criteria=DetachedCriteria.forClass(Customer.class);
		if (null!=customer.getcName()&& "".equals(customer.getcName())) {
			criteria.add(Restrictions.eq("cName", customer.getcName()));
		}
		if (null!=customer.getcLevel()&& "".equals(customer.getcLevel())) {
			criteria.add(Restrictions.eq("cLevel", customer.getcLevel()));
		}
		if (null!=customer.getcSource()&& "".equals(customer.getcSource())) {
			criteria.add(Restrictions.eq("cSource", customer.getcSource()));
		}
		if (null!=customer.getcPhone()&& "".equals(customer.getcPhone())) {
			criteria.add(Restrictions.eq("cPhone", customer.getcPhone()));
		}
		if (null!=customer.getcMobile()&& "".equals(customer.getcMobile())) {
			criteria.add(Restrictions.eq("cMobile", customer.getcMobile()));
		}
		return (List<Customer>) this.getHibernateTemplate().findByCriteria(criteria);
	}
	
}
水平有限,作爲複習查詢之用,有什麼錯誤之處,請留言指教!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章