《java從入門到精通》20091229_實例講解_第1頁
《java從入門到精通》20091229_實例講解_第2頁
《java從入門到精通》20091229_實例講解_第3頁
《java從入門到精通》20091229_實例講解_第4頁
《java從入門到精通》20091229_實例講解_第5頁
全文預(yù)覽已結(jié)束

下載本文檔

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

文檔簡介

1、北京MLDN軟件實訓中心 聯(lián)系電話:010-512833461、課程名稱:實例講解2、題目要求現(xiàn)在要求使用JDBC完成雇員表的CRUD操作,使用emp表中的如下字段:empno、ename、job、hiredate、sal、comm。完成的功能:增加數(shù)據(jù)、修改數(shù)據(jù)、刪除數(shù)據(jù)、模糊查詢數(shù)據(jù)(數(shù)據(jù)的部分顯示),查詢?nèi)繑?shù)據(jù)量,可以根據(jù)編號查詢一個雇員的信息。3、代碼開發(fā)3.1、開發(fā)口訣為了保證可以快速的上手開發(fā),下面給出一些基本的思考步驟:1、類的開發(fā)要求:· 要根據(jù)需求寫類的名稱,根據(jù)要求編寫屬性,所有的屬性必須封裝,封裝之后的屬性如果需要設(shè)置和取得的話,則編寫setter和gette

2、r方法。· 類中可以編寫構(gòu)造方法,通過構(gòu)造設(shè)置內(nèi)容,但是必須保證一個類(簡單類)中不管有多少個構(gòu)造,一定要保留有一個無參構(gòu)造方法,而且如果有多個構(gòu)造的話,就需要按照參數(shù)的個數(shù)排列。· 一個類永遠不能去繼承一個已經(jīng)實現(xiàn)好的類,而只能繼承抽象類或?qū)崿F(xiàn)接口· 當抽象類和接口都可以使用的時候優(yōu)先考慮接口· 沒有包的類是不存在的,每個類都必須放在一個包之中· 異常處理的標準格式· 以后碰見取得接口實例化操作的時候一定要通過工廠返回· 看見集合想都不想使用Iterator接口輸出2、設(shè)計要求:· 一個程序開發(fā)的時候一定要先設(shè)置

3、標準,標準就是接口。· 各個類之間靠接口進行交互,接口是進行解耦合操作的。· 主方法中代碼越少越簡單越好,一般主方法中是不允許導入java.sql包的。· 根據(jù)要求細分類的組成,類的設(shè)計原則跟現(xiàn)實生活是一樣的。· 在進行JDBC的操作中只能使用PreparedStatement接口。3.2、分析題目現(xiàn)在操作的是數(shù)據(jù)庫中的表,那么既然是表的話,肯定屬于資源層的操作,數(shù)據(jù)庫實際上操作的都是數(shù)據(jù),對于這種操作數(shù)據(jù)的開發(fā)的程序,我們可以將其稱為數(shù)據(jù)訪問對象(Data Access Object,DAO)。之后又發(fā)現(xiàn),表的組成感覺和類的組成非常的相似。·

4、 表à類· 數(shù)據(jù)à對象從這種對應(yīng)關(guān)系上可以發(fā)現(xiàn),一個對象實際上就可以表示每一條記錄?,F(xiàn)在將一張表通過一個類的形式映射出來:· emp表à Emp類不管以后如何操作每一個Emp的對象肯定都表示一張表的一條記錄,儲存的是值,既然是值,就可以將其用另外一個名字替代:VO(Value Object,值對象)。接口的命名規(guī)范和類的命名規(guī)范是完全一樣的,那么如果現(xiàn)在給出一個EmpDAO。那么為了區(qū)分,在接口前加一個字母“I”,所以接口:IEmpDAO。對于數(shù)據(jù)庫而言程序中關(guān)心的就是CRUD,其中增加、修改、刪除都屬于數(shù)據(jù)庫的更新操作,而查詢屬于另外一種操作

5、,那么如果以后要想從方法中區(qū)分兩種類型的不同,就給出一個命名規(guī)范:· 所有的更新操作的方法命名格式:doXxx()· 所有查詢操作的方法命名格式:findXxx()、getXxx()package org.lxh.oracle.dao;import java.util.List;import org.lxh.oracle.vo.Emp;public interface IEmpDAO /* * 完成數(shù)據(jù)庫的增加操作 * param emp 增加的VO對象,里面保存著具體的內(nèi)容 * return 是否成功的標記 * throws Exception 如果有異常交給被調(diào)用處處理

6、 */public boolean doCreate(Emp emp) throws Exception;/* * 完成數(shù)據(jù)庫的修改操作 * param emp 增加的VO對象,里面保存著具體的內(nèi)容 * return 是否成功的標記 * throws Exception 如果有異常交給被調(diào)用處處理 */public boolean doUpdate(Emp emp) throws Exception;/* * 數(shù)據(jù)庫的刪除操作 * param empno 要刪除的編號 * return 是否刪除成功的標記 * throws Exception 有異常交給被調(diào)用處處理 */public bool

7、ean doDelete(int empno) throws Exception;/* * 根據(jù)編號查詢單條記錄 * param empno 雇員編號 * return 一個對象,如果沒有查詢到返回null * throws Exception 如果有異常交給被調(diào)用處處理 */public Emp findById(int empno) throws Exception ;/* * 查詢?nèi)坑涗?* param keyWord 查詢關(guān)鍵字 * return 查詢的結(jié)果集 * throws Exception */public List<Emp> findAll(String key

8、Word) throws Exception ;/* * 查詢數(shù)據(jù)庫,可以進行部分的數(shù)據(jù)顯示 * param keyWord 查詢關(guān)鍵字 * param currentPage 當前所在的頁 * param lineSize 每頁顯示多少條記錄 * return 查詢結(jié)果集 * throws Exception */public List<Emp> findAll(String keyWord,int currentPage,int lineSize) throws Exception ;/* * 查詢符合條件的記錄數(shù) * param keyWord 模糊查詢關(guān)鍵字 * retur

9、n 查詢的記錄數(shù) * throws Exception 有異常交給被調(diào)用處處理 */public int getAllCount(String keyWord) throws Exception ;下面肯定要實現(xiàn)此標準,但是在實現(xiàn)此標準中有一個問題需要考慮了。在進行JDBC的操作中,可以發(fā)現(xiàn)步驟如下:1、加載驅(qū)動程序2、取得數(shù)據(jù)庫連接3、進行數(shù)據(jù)庫操作à這個是操作的重點4、關(guān)閉數(shù)據(jù)庫對于數(shù)據(jù)庫的打開和關(guān)閉的操作一定要注意,由于其是固定的代碼,所以,可以將其單獨定義成一個新的類,此類專門負責數(shù)據(jù)庫的連接與關(guān)閉:DatabaseConnection。理論上講,當一個接口定義完成之后,下面

10、要定義的是實現(xiàn)接口的具體實現(xiàn)類。Overridepublic boolean doCreate(Emp emp) throws Exception String sql = "INSERT INTO emp(empno,ename,job,hiredate,sal,comm) VALUES (?,?,?,?,?,?)"boolean flag = false;DatabaseConnection dbc = new DatabaseConnection();pstmt = dbc.getConnection().prepareStatement(sql);pstmt.set

11、Int(1, emp.getEmpno();pstmt.setString(2, emp.getEname();pstmt.setString(3, emp.getJob();pstmt.setDate(4, new java.sql.Date(emp.getHiredate().getTime();pstmt.setFloat(5, emp.getSal();pstmt.setFloat(6, emp.getComm();if (pstmt.executeUpdate() > 0) flag = true ;pstmt.close() ;dbc.close();return flag;

12、以上確實實現(xiàn)了具體的接口的操作,但是這種代碼會存在以下問題:· 危險性:因為本代碼一旦出錯之后數(shù)據(jù)庫無法關(guān)閉。· 代碼結(jié)構(gòu):應(yīng)該劃分出代理主題和真實主題。代理負責數(shù)據(jù)庫打開和關(guān)閉,并且調(diào)用真實主題。此時,可以發(fā)現(xiàn)程序中的主方法的操作代碼非常的簡單,那么這種設(shè)計模式在開發(fā)中就稱為DAO設(shè)計模式,DAO設(shè)計模式中有以下幾部分組成:1、VO類:用于映射與一張表的關(guān)系2、DAO接口:定義一個項目中一張表的全部操作方法3、編寫實現(xiàn)類:只完成具體的數(shù)據(jù)庫的操作,而不關(guān)心如何打開和連接4、編寫代理類:代理類負責數(shù)據(jù)庫的打開和關(guān)閉,并且調(diào)用真實實現(xiàn)類5、數(shù)據(jù)庫連接類:專門用于取得和關(guān)閉數(shù)據(jù)

13、庫連接的操作6、工廠類:取得接口實例3.3、任務(wù)二在emp表中還存在著一個mgr的字段,現(xiàn)在要求加入此字段的操作,即:一個雇員添加的時候可以輸入領(lǐng)導編號,查詢?nèi)抗蛦T信息的時候也要求可以查詢出領(lǐng)導的編號和姓名。在增加的時候就是在Emp類中增加了一個自身的關(guān)聯(lián),而且可以發(fā)現(xiàn),表中的關(guān)系一定要在類中有所體現(xiàn),但是對于實現(xiàn)類操作代碼肯定就麻煩了,因為要考慮到關(guān)系的維護,因為之前講解所有Java類的關(guān)系的時候都是采用手工的方式設(shè)置的,而現(xiàn)在是通過數(shù)據(jù)的保存自動進行設(shè)置的。所有的關(guān)系先從VO下手修改,因為VO本身與表就是完全對應(yīng)的,之后再考慮實現(xiàn)類的問題。當然,在實際的開發(fā)中,一般接口定義完之后是不會輕易更改,但是現(xiàn)在的開發(fā)是采用逐步的方式分析的,所以以后的接口有可能更改。3.4、任務(wù)三將部門表的操作也形成這種DAO的操作模式,但是操作的方法可以簡單:增加、修改、刪除、模糊查詢、根據(jù)編號查詢,不需要分頁顯示。部門的基本操作和EMP是完全一樣的。3.5、任務(wù)四在emp表中還存在著一個deptno的字段,要求也可以將其的關(guān)系設(shè)置上去,而且可以在添加的

溫馨提示

  • 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

提交評論