一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務(wù)器之家 - 編程語言 - Java教程 - Java 中利用泛型和反射機(jī)制抽象DAO的實(shí)例

Java 中利用泛型和反射機(jī)制抽象DAO的實(shí)例

2020-11-30 15:27ykdsg Java教程

這篇文章主要介紹了Java 中利用泛型和反射機(jī)制抽象DAO的實(shí)例的相關(guān)資料,需要的朋友可以參考下

Java 中利用泛型反射機(jī)制抽象DAO的實(shí)例

一般的DAO都有CRUD操作,在每個(gè)實(shí)體DAO接口中重復(fù)定義這些方法,不如提供一個(gè)通用的DAO接口,具體的實(shí)體DAO可以擴(kuò)展這個(gè)通用DAO以提供特殊的操作,從而將DAO抽象到另一層次,令代碼質(zhì)量有很好的提升

1.通用接口

?
1
2
3
4
5
6
7
8
9
10
import java.io.Serializable;
import java.util.List;
public interface BaseDao<T> {
  T get(Serializable id);
  List<T> getAll();
// List<T> find(String hql,);
  void save(Object o);
  void remove(Object o);
  void update(Object o);
}

2.DAO基類

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
import java.io.Serializable;
import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;
import java.util.List;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
public class HibernateBaseDao<T> extends HibernateDaoSupport implements BaseDao<T>{
  private Class<T> entityClass;
  public HibernateBaseDao() {
    Type genType = getClass().getGenericSuperclass();
    Type[] params = ((ParameterizedType) genType).getActualTypeArguments();
    entityClass = (Class)params[0];
  }
  public T get(Serializable id) {
    return (T)getHibernateTemplate().load(entityClass, id);
  }
   public List<T> getAll() {
    return getHibernateTemplate().loadAll(entityClass);
  }
  public void save(Object o) {
    getHibernateTemplate().saveOrUpdate(o);
  }
  public void remove(Object o) {
    getHibernateTemplate().delete(o);
  }
  public void update(Object o) {
    getHibernateTemplate().update(o);   
  }
}

這里利用反射機(jī)制獲取泛型對(duì)應(yīng)的實(shí)體類的類型

3.實(shí)體DAO類

?
1
2
3
4
5
6
7
8
9
10
11
12
import java.util.Iterator;
import java.util.List;
import com.baobaotao.dao.ForumDao;
import com.baobaotao.dao.HibernateBaseDao;
import com.baobaotao.domain.Forum;
public class ForumHibernateDao2 extends HibernateBaseDao<Forum> implements ForumDao{
  public long getForumNum() {
    Iterator iter = getHibernateTemplate().iterate(
    "select count(f.forumId) from Forum f");
    return ((Long)iter.next());
  }
}

通過擴(kuò)展泛型DAO基類,就自動(dòng)擁有基類的數(shù)據(jù)操作功能,只要提供特殊的功能即可,實(shí)體DAO的編碼生產(chǎn)率得到了極大的提高

 以上就是Java 中利用泛型和反射機(jī)制抽象DAO的實(shí)例的講解,大家如果對(duì)泛型及反射機(jī)制有不明白的可以查詢本站的相關(guān)文章或者留言交流,到社區(qū)提問,感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!

原文鏈接:http://blog.csdn.net/ykdsg/article/details/3628734

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 亚洲国产精品一区二区久久 | 亚洲国产成人久久综合一 | 海角社区在线登录 | jj视频免费 | 日日操天天射 | 西施打开双腿下面好紧 | 全黄h全肉细节文在线观看 全彩成人18h漫画 | 国产高清在线播放刘婷91 | 天若有情1992国语版完整版 | 暖暖视频高清图片免费完整版 | 青青草综合网 | 亚洲国产区中文在线观看 | 亚洲大逼| 精品免费视频 | 久久亚洲伊人 | 草草草视频 | 双性受合不垅腿攻np | 日本一区视频在线 | 亚洲精品免费在线观看 | 紧身裙女教师波多野结衣 | 国偷盗摄自产福利一区在线 | 婷射吧 | 国产综合社区 | 涩色网站 | 成人18视频在线观看 | 精品综合久久久久久8888 | 久久免费看少妇高潮A片特爽 | 99在线在线视频免费视频观看 | 66j8影院xxxx深夜 | 激情小说欧美图片 | aⅴ天堂小视频 | 2022最新国产在线 | 鬼畜重口高h合集长短篇 | 成年人天堂 | 操爽| 亚洲色大成网站www久久九九 | 亚洲黄色大片 | 91果冻制片厂天美传媒 | www.男人| 紧身裙女教师波多野结衣 | 日本精品久久久久久久久免费 |