<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      Java中獲取類聲明泛型的Class對象(WEB開發Dao層的抽取)

      在WEB開發中,用到三層架構中經常會遇到代碼抽取的情況,例如在dao層中,我們需要對數據庫的基本操作進行抽取例如這樣,在抽取之前我們需要定義抽取類的接口:

      public interface BaseDao<T> {
      	
      	public void save(T obj);
      	public void delete(T obj);
      	public void update(T obj);
      	public List<T> getAll();
      	public T getById(Serializable id);
      	
      }

      接口定義玩后我們需要定義接口的實現類了:

      public class BaseDaoImpl<T> extends HibernateDaoSupport implements BaseDao<T>{
      	
      	//該方法用于注解注入SessionFactory對象
           @Resource
      	public void setMySessionFactory(SessionFactory sessionFactory) {
      		super.setSessionFactory(sessionFactory);
      	}
      
      
      
      	@Override
      	public void save(T obj) {
      		this.getHibernateTemplate().save(obj);	
      	}
      
      	@Override
      	public void delete(T obj) {
      		this.getHibernateTemplate().delete(obj);
      	}
      
      	@Override
      	public void update(T obj) {
      		this.getHibernateTemplate().update(obj);
      	}
      
      	@Override
      	public List<T> getAll() {
      		String hql="from "+clazz.getSimpleName();
      		List<T> list = (List<T>) this.getHibernateTemplate().find(hql);
      		return list;
      	}
      
      	@Override
      	public T getById(Serializable id) {
      		
      	}
      }

      在實現類中增、刪、改的方法很容易實現,但由于HibernateTemplate的get方法必須傳入目標對象的Class對象,也就是get(Class<?> clazz,Serializable),由于該類是使用泛型表示“需要查詢的對象類型”,那我們如何獲得該類泛型的Class對象成為了關鍵。(雖然getById()方法也可以像getAll()方法一樣采用HQL查詢,但我們為了演示這個問題,所以不采用這個方法)

      public class BaseDaoImpl<T> extends HibernateDaoSupport implements BaseDao<T>{
      	
      	//該字段保存當前類泛型的Class對象
              private Class<T> clazz;
      	
      	
      	
      	public BaseDaoImpl() {
      
                      //返回表示此 Class 所表示的實體的直接超類的 Type
      		ParameterizedType genericSuperclass = (ParameterizedType)this.getClass().getGenericSuperclass();
                      //獲得本類聲明的泛型數組(實際上只有一個)
      		Type[] actualTypeArguments = genericSuperclass.getActualTypeArguments();
              
      		clazz = (Class<T>)actualTypeArguments[0];
      	}
          
      	//為了簡介,這里省略前面已經給出實現過程的方法
              ............
      
      	@Override
      	public T getById(Serializable id) {
      		T t = this.getHibernateTemplate().get(clazz,id);
      		return t;
      	}
      }

       

      posted @ 2018-09-24 15:22  聽到微笑  閱讀(11)  評論(0)    收藏  舉報  來源
      主站蜘蛛池模板: 国产亚洲精品第一综合| 男人狂桶女人出白浆免费视频| 国产成人精品午夜福利在线观看| 亚洲成aⅴ人在线电影| 成人aⅴ综合视频国产| 久99久热只有精品国产99| 国产精品成人观看视频国产奇米| 欧美人与性囗牲恔配| 天堂V亚洲国产V第一次| 人人妻人人澡人人爽曰本| 久久一本人碰碰人碰| 亚洲中文字幕无码久久2020| 日韩有码中文在线观看| 在线观看美女网站大全免费| 无码av最新无码av专区| 亚洲精品av一二三区无码| 日韩在线不卡免费视频一区| 免费人成在线观看成人片| 亚洲高清WWW色好看美女| 欧美饥渴熟妇高潮喷水| 韩国精品福利视频一区二区| 久久亚洲国产成人精品性色| 五月综合激情婷婷六月| 亚洲综合av一区二区三区| 爱情岛亚洲论坛成人网站| 无码人妻斩一区二区三区 | 兴宁市| 人人妻人人澡人人爽人人精品av | 国产综合久久99久久| 囯产精品久久久久久久久久妞妞| 麻豆精品国产熟妇aⅴ一区| 97人洗澡人人澡人人爽人人模| 欧美日韩亚洲国产| 国产精品女同一区三区五区| 日韩高清亚洲日韩精品一区二区| 加勒比中文字幕无码一区| 中文字幕精品av一区二区五区| 性欧美欧美巨大69| 久久a级片| 日韩无人区码卡1卡2卡| 精品国产亚洲一区二区三区|