BaseDao
package wl.oa.dao.base; public interface BaseDao<T>{ public void saveEntry(T t); }
BaseDaoImpl
package wl.oa.dao.base.impl; import java.lang.reflect.ParameterizedType; import javax.annotation.Resource; import org.springframework.orm.hibernate3.HibernateTemplate; import wl.oa.dao.base.BaseDao; public class BaseDaoImpl<T> implements BaseDao<T>{ @Resource(name="hibernateTemplate") private HibernateTemplate hibernateTemplate; public void saveEntry(T t) { // TODO Auto-generated method stub this.hibernateTemplate.save(t); } }
BaseService
package wl.oa.service.base; public interface BaseService<T> { public void saveEntry(T t); }
BaseServiceImpl
package wl.oa.service.base.impl; import javax.annotation.Resource; import org.springframework.transaction.annotation.Transactional; import wl.oa.dao.base.BaseDao; import wl.oa.service.base.BaseService; public class BaseServiceImpl<T> implements BaseService<T>{ @Resource//(别加 name属性) private BaseDao baseDao; @Transactional(readOnly=false) public void saveEntry(T t) { // TODO Auto-generated method stub this.baseDao.saveEntry(t); } }
Test
package wl.oa.test; import org.junit.Test; import wl.oa.dao.PersonDao; import wl.oa.domain.Person; import wl.oa.service.PersonService; public class PersonTest extends BaseSpring{ @Test public void testsavePerson(){ PersonService personService=(PersonService) context.getBean("personService"); Person person=new Person(); person.setPname("莽子"); personService.saveEntry(person); } @Test public void testHibernateTemplate(){ PersonDao personDao = (PersonDao)context.getBean("personDao"); Person person=new Person(); person.setPname("莽子1"); personDao.saveEntry(person); } }
jinut 测试 ok
获得真是类型
private Class classt; /** * 1、在父类中要执行一段代码,这个代码的执行时间为子类创建对象的时候,这段代 码已经执行完了,根据这个需求,有两种方案供选择 * * 利用static语句块 * * 利用父类的构造函数 * 2、分析: * 因为得到ParameterizedType需要用到this关键字,而this关键字不能出现在 static语句块中 * 所以只能选择父类的构造器 */ public BaseDaoImpl(){ /** * ParameterizedType就是泛型 */ ParameterizedType type = (ParameterizedType)this.getClass ().getGenericSuperclass(); this.classt = (Class)type.getActualTypeArguments()[0];//<T> System.out.println(type.getRawType()); }