聲明:本欄目所使用的素材都是凱哥學(xué)堂VIP學(xué)員所寫,學(xué)員有權(quán)匿名,對(duì)文章有最終解釋權(quán);凱哥學(xué)堂旨在促進(jìn)VIP學(xué)員互相學(xué)習(xí)的基礎(chǔ)上公開(kāi)筆記。
這個(gè)綜合例題主要就是使用JDBC的方式來(lái)對(duì)數(shù)據(jù)庫(kù)表格進(jìn)行增、刪、查、改操作,其中還要逐個(gè)對(duì)這些方法進(jìn)行測(cè)試,所以還要編寫測(cè)試用例。編寫這個(gè)例題主要意義是練習(xí)和進(jìn)一步熟悉JDBC對(duì)數(shù)據(jù)庫(kù)表格進(jìn)行增、刪、查、改操作的方式,鞏固JDBC這個(gè)知識(shí)點(diǎn)。
這個(gè)例題里要用到的技術(shù)有:Maven、DBUnit、C3P0連接池、Log4j、MySQL數(shù)據(jù)庫(kù)。
1.先準(zhǔn)備一個(gè)干凈的數(shù)據(jù)庫(kù)和兩個(gè)表格,并且給這兩個(gè)表格構(gòu)建關(guān)聯(lián)關(guān)系:
2.創(chuàng)建Maven工程,并配置好所有的依賴包:
配置好依賴包:
3.在源碼文件夾和測(cè)試源碼文件夾里創(chuàng)建好相應(yīng)的包(package),以便分類,免得所有類都擠在一起顯得亂糟糟的:
源碼文件夾下的包:
c3p0manager 這個(gè)包是用來(lái)放連接對(duì)象管理類的
org.zero01.iuds 這個(gè)包是用來(lái)放封裝類和功能類的
exception 這個(gè)包是用來(lái)放自定義異常類的
測(cè)試源碼文件夾下的包:
org.zero01.test 這個(gè)包是用來(lái)放測(cè)試用例類的
4.在c3p0manager 包下創(chuàng)建一個(gè)類,這個(gè)類用于通過(guò)C3P0連接池獲得數(shù)據(jù)庫(kù)連接對(duì)象,并且這個(gè)類是單例模式:
代碼示例:
5.編寫兩個(gè)表格的數(shù)據(jù)封裝類:
Cls代碼示例:
Student代碼示例:
6.編寫對(duì)Cls表格操作的功能類:
7.編寫對(duì)Student表格操作的功能類:
8.在測(cè)試源碼文件夾下的org.zero01.test包里編寫測(cè)試類,對(duì)兩個(gè)功能類的方法逐個(gè)進(jìn)行測(cè)試:
測(cè)試結(jié)果:
測(cè)試覆蓋率:
日志信息的打印:
提示:我這是已經(jīng)完成的代碼,但是各位在實(shí)際編寫代碼的時(shí)候,最好是寫一個(gè)方法就測(cè)試一下,不要全部功能代碼寫完再寫測(cè)試用例測(cè)試,因?yàn)槟菢右坏┏鰡?wèn)題了,很多地方的代碼都要進(jìn)行修改,如果寫一個(gè)方法就測(cè)一個(gè)方法的話,就只需要針對(duì)一個(gè)方法進(jìn)行修改,而其他方法不需要變動(dòng),這樣效率高一些并且修改代碼也輕松些,不用到處修修改改弄得眼花繚亂。
我在編寫C3P0Manager類的時(shí)候,犯了一個(gè)邏輯上的小錯(cuò)誤,在這里記錄一下這個(gè)錯(cuò)誤,出現(xiàn)這個(gè)錯(cuò)誤是因?yàn)槲野褬?gòu)建對(duì)象的屬性聲明在了C3P0數(shù)據(jù)源類變量的前面,在構(gòu)造器外調(diào)用getConnection方法的時(shí)候就會(huì)拋出空指針異常:
圖解:
正確的聲明方式: