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);
	}
	
}
水平有限,作为复习查询之用,有什么错误之处,请留言指教!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值