web项目抽取BaseDao

来源:互联网 发布:卸载软件需要密码 编辑:程序博客网 时间:2024/06/06 20:31

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