springMVC项目中整合BaseDao

来源:互联网 发布:东莞天行健网络怎么样 编辑:程序博客网 时间:2024/06/04 18:08

在spring+hibernate项目中,都会涉及到对数据库的crud操作,为了减少重复代码,抽取了BaseDao接口,具体实现如下:

BaseDao.java接口

package dao;import java.util.List;public interface BaseDao<T> {//  增    void add(T t);//  删    void delete(T t);//  改    void update(T t);//  查所有    List<T> list();//  通过id查    T find(Integer id);}

BaseDaoImpl.java实现类

package dao.impl;import java.lang.reflect.ParameterizedType;import java.lang.reflect.Type;import java.util.List;import org.springframework.orm.hibernate5.support.HibernateDaoSupport;import dao.BaseDao;import entity.Customer;public class BaseDaoImpl<T> extends HibernateDaoSupport implements BaseDao<T> {    private Class aclass;    //查询所有和根据id查询两个方法都需要具体的实体类,所以在构造方法中获取实际类型参数。    public BaseDaoImpl(){        Class clazz=this.getClass();        //获得运行类的父类的参数化类型BaseDaoImpl<Customer>        ParameterizedType ptype=(ParameterizedType) clazz.getGenericSuperclass();        //获得参数化类型中的实际类型参数<Customer>        Type types[] = ptype.getActualTypeArguments();        this.aclass=(Class) types[0];    }    @Override    public void add(T t) {        this.getHibernateTemplate().save(t);    }    @Override    public void delete(T t) {        this.getHibernateTemplate().delete(t);    }    @Override    public void update(T t) {        this.getHibernateTemplate().update(t);    }    //  不能直接写成this.getHibernateTemplate().find("from T")    @Override    public List<T> list() {        // TODO Auto-generated method stub        return (List<T>) this.getHibernateTemplate().find("from "+aclass.getSimpleName());    }    @Override    public T find(Integer id) {        // TODO Auto-generated method stub        return (T) this.getHibernateTemplate().get(aclass, id);    }}

CustomerDao接口,需要继承BaseDao接口,并传入实际类型参数Customer。

package dao;import java.util.List;import java.util.Map;import entity.Customer;import entity.PageBean;public interface CustomerDao extends BaseDao<Customer>{//  void add(Customer customer);//  List<Customer> list();//  Customer find(Integer cid);//  void update(Customer customer);//  void delete(Customer customer);}

CustomerDaoImpl实现类,并需要继承BaseDaoImpl。
因为BaseDaoImpl中继承了HibernateDaoSupport,所以CustomerDaoImpl直接继承BaseDaoImpl即可。

package dao.impl;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;import org.hibernate.Query;import org.hibernate.SQLQuery;import org.hibernate.Session;import org.hibernate.criterion.DetachedCriteria;import org.hibernate.transform.AliasToBeanResultTransformer;import org.hibernate.transform.Transformers;import org.springframework.orm.hibernate5.HibernateTemplate;import org.springframework.orm.hibernate5.support.HibernateDaoSupport;import dao.CustomerDao;import entity.Customer;import entity.PageBean;public class CustomerDaoImpl extends BaseDaoImpl<Customer> implements CustomerDao {}
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 硬件系统不兼容怎么办 系统主板不兼容怎么办 安装软件不兼容怎么办 win10驱动不尖锐怎么办 苹果内存太小怎么办 内存太小怎么办手机 苹果手机屏幕不能滑动怎么办 vivo手机软件不兼容怎么办 微信无法录音怎么办 手机卡住了怎么办vivo 好钱包闪退怎么办 闲鱼认证失败怎么办 闲鱼买了假门票怎么办 买黄金买到假的怎么办 闲鱼被买家骗了怎么办 闲鱼上小视频没法保存怎么办 qq空间无法查看怎么办 华为手机电池不耐用怎么办 内内被动过怎么办 hp电脑开机黑屏怎么办 网上开店快递费怎么办 保温杯外壳掉漆怎么办 拖鞋前面磨脚怎么办 塑料拖鞋磨脚怎么办 路由器进不去设置界面怎么办 手机号丢了微信登不上怎么办 电脑总是闪黑屏怎么办 支付宝破产钱怎么办 淘宝号码注册过怎么办 农行k宝怎么办信用卡 电脑页面无法显示怎么办 对方银行停止收款怎么办 淘宝东西买太多怎么办 淘宝号黑号了怎么办… 中通包裹异常怎么办 包裹退回去了怎么办 qq支付密码错误怎么办 ie8出现闪退怎么办 平板输不了密码怎么办 华硕笔记本键盘打不开怎么办 电脑打不开rar文件怎么办