版權(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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 贛南醫(yī)學院《英語閱讀與思辨》2023-2024學年第一學期期末試卷
- 七年級語文上冊第二單元6散步教案新人教版
- 七年級道德與法治上冊第四單元生命的思考第八課探問生命第1課時誤區(qū)警示新人教版
- 三年級數(shù)學上冊7長方形和正方形第3課時周長導(dǎo)學案新人教版
- 三年級數(shù)學上冊第2單元兩三位數(shù)乘一位數(shù)2.8解決問題課時練冀教版
- 慢性胃炎培訓課件
- 《先芥蒂與麻醉》課件
- 人教版八年級物理下冊全冊教案
- 函數(shù)的圖象課件
- 涂料調(diào)色完整版本
- 九月主題計劃《 嗨,你好》
- e乙二醇精制車間設(shè)備布置圖
- 縣級綜治中心等級評定細則、申報表、負面清單、流程圖
- 行政強制法講座-PPT課件
- 2022年新媒體編輯實戰(zhàn)教程測試題及答案(題庫)
- 崗位現(xiàn)場應(yīng)急處置方案卡全套(全套20頁)
- 涼席竹片銑槽機(課程設(shè)計)
- 高壓線防護搭設(shè)方案
- 綜合機械化固體充填采煤技術(shù)要求-編制說明
- 十人聯(lián)名推薦表
- 七、分蛋糕博弈
評論
0/150
提交評論