JSP,SSH框架學習日志3,DAO層_第1頁
JSP,SSH框架學習日志3,DAO層_第2頁
JSP,SSH框架學習日志3,DAO層_第3頁
JSP,SSH框架學習日志3,DAO層_第4頁
JSP,SSH框架學習日志3,DAO層_第5頁
已閱讀5頁,還剩3頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、JSP,SSH框架學習日志3,DAO層model層完成之后應(yīng)該寫DAO層了,DAO層的主要功能就是對數(shù)據(jù)的操作。其實DAO層也可以由Hibernate的反向工程生成,不過生成的方法不夠完善,我們需要自己再添加進去。不過這樣每一張表都要寫重復(fù)一樣的話很麻煩。我是不會告訴你我以前是用反向工程一個一個生成,然后把要添加的方法寫一遍用復(fù)制粘貼然后再去一個一個改的。上課的時候賴老師教給我一個簡單的方法繼承。好吧,繼承這個我也會用,不過有個問題就是Hibernate的操作是對Model的對象進行操作的,而不是直接對數(shù)據(jù)庫進行操作,如果寫一個公用類來繼承的話,但是每個表的操作類的類型是不一樣的,我們定義他傳

2、進來的參數(shù)類型總不能有幾張表就寫幾次吧所以說老師是萬能的,他又給了我一個方法詳情請看/wiki/GenericDataAccessObjectsDAO需要一個接口和一個接口的實現(xiàn)類。因為Spring注入的時候只能用接口注入。我給DAO層寫一個公用類和接口放在了公用層里,名字分別為CommonDAO和ICommonDAO。以下是ICommonDAO的代碼package com.ksxt.sys;import java.io.Serializable;import java.util.List;public interface ICommonDA

3、O<T,ID extends Serializable>     public void save(T transientInstance) throws Exception;       public void delete(T persistentInstance) throws Exception;       public  void update(T instance) th

4、rows Exception;       public int updateByQuery(String hql);       public T findById(ID id);       public List<T> findByqQuery(String hql);       public Li

5、st<T> findAll();       public  List<T> queryForPage(String hql, int offset,int length);以下是CommonDAO的代碼package com.ksxt.sys;import java.io.Serializable;import java.lang.reflect.ParameterizedType;import java.util.List;import org.hibernate.Criter

6、ia;import org.hibernate.SessionFactory;import org.hibernate.criterion.Criterion;public abstract class CommonDAO<T,ID extends Serializable> implements ICommonDAO<T, ID>     private SessionFactory sessionFactory;/加載數(shù)據(jù)庫連接(使用spring實現(xiàn)加載)    private Clas

7、s<T> persistentClass;       /sessionFactory的get和set方法。    public SessionFactory getSessionFactory()         return sessionFactory;        public void setSessio

8、nFactory(SessionFactory sessionFactory)         this.sessionFactory = sessionFactory;           /用構(gòu)造方法處理Class<T>以下為固定模式    public CommonDAO()      &#

9、160;     this.persistentClass = (Class<T>) (ParameterizedType) getClass()                .getGenericSuperclass().getActualTypeArguments()0;        &#

10、160;  public Class<T> getPersistentClass()         return persistentClass;           /對表的操作(增刪改查)    /保存    public void save(T transientInstance) thr

11、ows Exception            try             sessionFactory.getCurrentSession().save(transientInstance);         catch (RuntimeException e) 

12、0;           throw e;                   /刪除    public void delete(T persistentInstance) throws Exception    &#

13、160;       try             sessionFactory.getCurrentSession().delete(persistentInstance);         catch (RuntimeException e)       

14、0;     throw e;                      /更新    public void update(T instance) throws Exception         

15、   try             sessionFactory.getCurrentSession().saveOrUpdate(instance);         catch (RuntimeException e)             

16、/ TODO: handle exception            throw e;                      /根據(jù)傳進來的HQL語句更新,返回受影響行數(shù)    public int updateB

17、yQuery(String hql)            int k=0;        try             k=sessionFactory.getCurrentSession().createQuery(hql).executeUpdate(); &#

18、160;       catch (RuntimeException e)             / TODO: handle exception            throw e;         &#

19、160;      return k;           /根據(jù)傳進來的ID進行查詢    public T findById(ID id)                   try  

20、           T instance = (T) sessionFactory.getCurrentSession().get(getPersistentClass(), id);            return instance;         catch (RuntimeE

21、xception e)             / TODO: handle exception            throw e;                  

22、0;/根據(jù)傳進來的hql查詢    public List<T> findByqQuery(String hql)            try             return sessionFactory.getCurrentSession().createQuery(hql).list();

23、60;        catch (RuntimeException e)             / TODO: handle exception            throw e;        

24、60;          /查找所有表里的所有內(nèi)容    public List<T> findAll()            try             return findByCriteria()

25、;/調(diào)用下面的findByCriteria方法         catch (RuntimeException e)             / TODO: handle exception            throw e;    &

26、#160;              /查找表里的所有內(nèi)容并返回    protected List<T> findByCriteria(Criterion. criterion)         Criteria crit = sessionFactory.getCurrentSession().createCriteria

27、(                getPersistentClass();        for (Criterion c : criterion)             crit.add(c);   &#

28、160;            return crit.list();           /jQuery Easyui Datagrid需要的方法,根據(jù)傳進來的hql,當前頁數(shù),頁面長度返回數(shù)據(jù)列    public List<T> queryForPage(String hql, int offset, int

29、length)         try            List<T> results=sessionFactory.getCurrentSession().createQuery(hql)                

30、    .setFirstResult(offset)                    .setMaxResults(length)                  

31、60; .list();            return results;        catch (RuntimeException re)             throw re;               這里面的方法還不是很完全,可根據(jù)需要自行添加或刪除。公用的類和接口寫完了

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論