码迷,mamicode.com
首页 > 其他好文 > 详细

BaseDao的抽取

时间:2016-07-19 19:14:43      阅读:144      评论:0      收藏:0      [点我收藏+]

标签:ssh整合中的dao层的basedao的抽取

在ssh整合开发中,会创建多个不同的dao层对数据库里的数据进行crud操作,其实每个里面用到的方法几乎都一样,只是传递的参数类型不同.我们可以抽取出一个BaseDao类.由于开发中的高内聚低耦合的思想,所以定义为一个接口,再创建实现类继承即可.在接口上定义传递类型的泛型,通过反射技术及Class类中的方法获取.


package cn.itcast.util;


import java.lang.reflect.ParameterizedType;

import java.lang.reflect.Type;

import java.util.List;


import org.springframework.orm.hibernate5.support.HibernateDaoSupport;


public class BaseDaoImpl<T> extends HibernateDaoSupport implements BaseDao<T> {

//定义一个成员变量,以便后面的方法中使用

private Class clazz;

public BaseDaoImpl() {

//用Object类中的getClass()方法,获取当前运行类的class对象

Class c = this.getClass();

//得到当前运行类的父类的参数化类型

//Type getGenericSuperclass() 

       //返回表示此 Class 所表示的实体(类、接口、基本类型或 void)的直接超类的 Type。 

Type type = c.getGenericSuperclass();

//ParameterizedType是Type的子类,将Type强转为ParameterizedType类型

ParameterizedType ptype = (ParameterizedType) type;

// Type[] getActualTypeArguments() 

// 返回表示此类型实际类型参数的 Type 对象的数组。 

Type[] t = ptype.getActualTypeArguments();

//获取实际类型参数

this.clazz = (Class) t[0];

System.out.println(clazz);//--->class cn.itcast.entity.CusVisit全类名

}

@Override

public void save(T t) {

//调用HibernateTemplate模本中的方法

this.getHibernateTemplate().save(t);

}

@Override

public void update(T t) {

this.getHibernateTemplate().update(t);

}

@Override

public void delete(T t) {

this.getHibernateTemplate().delete(t);

}

@Override

public T get(int id) {

T t = (T) this.getHibernateTemplate().get(clazz, id);

return t;

}

@Override

public List<T> list() {

// String getSimpleName() 

        //返回源代码中给出的底层类的简称 

String hql = "from "+clazz.getSimpleName();//-->CusVisit (类名)

List<T> list = (List<T>) this.getHibernateTemplate().find(hql);

return list;

}


}


本文出自 “11768969” 博客,请务必保留此出处http://11778969.blog.51cto.com/11768969/1827746

BaseDao的抽取

标签:ssh整合中的dao层的basedao的抽取

原文地址:http://11778969.blog.51cto.com/11768969/1827746

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!