您好,登錄后才能下訂單哦!
/**
* @author Mr.Deng
* @since 2016-5-14
* @version 1.0
*使用notepad打開(kāi)方便閱讀
*歡迎糾正錯(cuò)誤,寫(xiě)下自己的見(jiàn)解
*/
項(xiàng)目描述:用戶(hù)登錄可以管理對(duì)自己的通信錄信息進(jìn)行管理.
項(xiàng)目依賴(lài)軟件:mysql eclipse.
項(xiàng)目依賴(lài)技術(shù):javaSE , JDBC, swing組件
1.架構(gòu):3層架構(gòu)
1.展示層:1.用戶(hù)只能對(duì)自己和自己的通訊錄進(jìn)行操作(私人權(quán)限)
2.使用java GUI圖像界面:
1.登錄注冊(cè)主頁(yè)面界面
2.注冊(cè)頁(yè)面
3.功能頁(yè)面:按上中下3層界面布局:
1.上:歡迎窗口
2.中:展示用戶(hù)所有通訊錄信息詳情
3.下:用戶(hù)對(duì)通訊錄操作的按鈕
2.業(yè)務(wù)層:1.后臺(tái)人員對(duì)所有用戶(hù)進(jìn)行操作(管理員權(quán)限)
2.使用java編寫(xiě)后臺(tái)程序:編寫(xiě)接口和實(shí)現(xiàn)類(lèi)實(shí)現(xiàn)類(lèi)通過(guò)調(diào)用持久層編寫(xiě)的接口實(shí)現(xiàn)功能
3.持久層:1.java程序員通過(guò)編寫(xiě)源代碼實(shí)現(xiàn)各種操作(造物主)
2.使用JDBC連接數(shù)據(jù)庫(kù)保存數(shù)據(jù)
3.使用配置文件連接JDBC,假如修改了數(shù)據(jù)庫(kù)。只需要修改配置文件不需要修改源代碼
具體實(shí)現(xiàn):3層架構(gòu)每層通過(guò)接口進(jìn)行連接(依賴(lài)關(guān)系)
1.展示層---業(yè)務(wù)層:1.接口:UsersService,ContactsService
2.實(shí)現(xiàn)類(lèi):UsersServiceImpl,ContactsServiceImpl
作用:展示層獲得的數(shù)據(jù)或操作傳入到業(yè)務(wù)層
業(yè)務(wù)層流程:1.調(diào)用持久層的接口
2.創(chuàng)建接口對(duì)象
3.調(diào)用接口對(duì)象身上的方法進(jìn)行數(shù)據(jù)操作
原理:1.接口只定義方法體,沒(méi)有實(shí)現(xiàn)細(xì)節(jié),不能直接創(chuàng)建對(duì)象
2.ContactDaoImpl類(lèi)是實(shí)現(xiàn)類(lèi),重寫(xiě)了接口的所有方法,并且有實(shí)現(xiàn)細(xì)節(jié)
3.通過(guò)創(chuàng)建實(shí)現(xiàn)類(lèi)對(duì)象,實(shí)例化接口。接口就可以調(diào)用所有實(shí)現(xiàn)類(lèi)的方法,進(jìn)行操作
ContactDao ctd = new ContactDaoImpl();
2.業(yè)務(wù)層---持久層:1.接口:UsersDao
2.實(shí)現(xiàn)類(lèi):UsersDaoImpl
作用:對(duì)數(shù)據(jù)進(jìn)行各種操作并放入數(shù)據(jù)庫(kù)中
原理:1.通訊錄和用戶(hù)對(duì)象隨著方法的調(diào)用而存在,方法調(diào)用結(jié)束對(duì)象消失。
2.對(duì)象存在于內(nèi)存,通過(guò)JDBC連接數(shù)據(jù)庫(kù)就可以將對(duì)象身上的屬性保存起來(lái)。
3.持久層---展示層:持久層的所有功能依賴(lài)于展示層獲得的數(shù)據(jù)
沒(méi)有數(shù)據(jù)持久層的存在沒(méi)有意義
沒(méi)有持久層的功能實(shí)現(xiàn),展示層也沒(méi)有任何意義
2.包命名規(guī)范:
1.持久層:1.com.lovo.contacts.bean:實(shí)體包存放所有的實(shí)體對(duì)象,Users,contactsdetail遵循javabean規(guī)范,實(shí)現(xiàn)序列化接口Serializable
2.com.lovo.contacts.dao:接口包存放持久層的所有接口
3.com.lovo.contacts.dao.impl:實(shí)現(xiàn)類(lèi)存放所有實(shí)現(xiàn)了dao包接口的類(lèi)
4.com.lovo.contacts.util:工具包存放所有持久層代碼需要的工具 如文件,DBUtil
2.業(yè)務(wù)層:1.com.lovo.contacts.service:業(yè)務(wù)層包存放所有業(yè)務(wù)層接口 UsersService,ContactsService
2.com.lovo.contacts.service.impl:實(shí)現(xiàn)類(lèi)包存放所有實(shí)現(xiàn)業(yè)務(wù)層包接口的實(shí)現(xiàn)類(lèi)
3.展示層:com.lovo.contacts.gui:圖形界面包存放所有界面類(lèi)
4.javabean規(guī)范:1.公共的類(lèi)
2.屬性私有化
3.提供公共的get,set方法
4.不帶參的構(gòu)造方法
5.實(shí)現(xiàn)序列化接口Serializable
總結(jié):1.命名規(guī)范化保證項(xiàng)目的可理解性,方便管理。項(xiàng)目由多個(gè)程序員編寫(xiě)一個(gè)好的命名規(guī)范和結(jié)構(gòu)方便更改實(shí)現(xiàn)同步編寫(xiě)
2.每個(gè)項(xiàng)目有自己的命名規(guī)范,大體一致
3.各方法塊代碼流程:1.獲取數(shù)據(jù)庫(kù)連接:Connection con = DBUtil.getconnection
2.編寫(xiě)SQL語(yǔ)句,使用問(wèn)號(hào)防止SQL注入
3.創(chuàng)建預(yù)編譯處理對(duì)象:PreparedStatement pstmt = con.prepardStatement(sql);
4.更改問(wèn)號(hào)的值
5.執(zhí)行sql語(yǔ)句:
1.增:1.(sql, PreparedStatement.RETURN_GENERATED_KEYS)保證主鍵自增長(zhǎng),
2.獲取對(duì)象身上的值,設(shè)置到數(shù)據(jù)庫(kù)相應(yīng)的字段中
3.獲取數(shù)據(jù)庫(kù)結(jié)果集,判斷將第一個(gè)對(duì)象的ID設(shè)置成1,多個(gè)對(duì)象實(shí)現(xiàn)自增長(zhǎng)
4.關(guān)閉連接
2.查:1.查詢(xún)所有字段的值放入結(jié)果集,條件id=? and status=1 1表示存在
2.創(chuàng)建新的contactdetail對(duì)象,
3.將結(jié)果集相應(yīng)的值設(shè)置到contactdetail對(duì)象身上
4.關(guān)閉連接
3.刪:1.status字段表示表的狀態(tài),根據(jù)查詢(xún)語(yǔ)句只有status=1時(shí) 用戶(hù)才能查詢(xún)到這張表
2.設(shè)置status=0 用戶(hù)就不能查詢(xún)到這張表。邏輯刪除:數(shù)據(jù)還存在,只是用戶(hù)查詢(xún)不到。物理刪除:數(shù)據(jù)從數(shù)據(jù)庫(kù)消失
3.更新數(shù)據(jù)庫(kù)
4.關(guān)閉連接
4.改:1.用戶(hù)傳入contactdetail對(duì)象,有些字段的值是修改過(guò)的
2.獲取contactdetail對(duì)象身上的值
3.對(duì)數(shù)據(jù)庫(kù)里contactdetail里字段的每一個(gè)字段的值進(jìn)行覆蓋
4.關(guān)閉連接
擴(kuò)展:
1.自定義異常:1.定義異常類(lèi)繼承Exception的屬性和方法
2.提供帶參和不參的構(gòu)造方法
public NameNotFoundException() {}
public NameNotFoundException(String message) {super(message);}
3.判斷語(yǔ)句如果用戶(hù)名不正確 throw new NameNotFoundException("用戶(hù)名不存在");
2.try{}finally{}作用:保證try塊內(nèi)發(fā)生異常都能執(zhí)行finally塊里的內(nèi)容
總結(jié):1.對(duì)數(shù)據(jù)庫(kù)里的數(shù)據(jù)進(jìn)行修改后,需要更新。查詢(xún)不需要
2.先分析功能理清思路,再寫(xiě)流程注釋。最后根據(jù)流程注釋填充代碼。
3.根據(jù)返回類(lèi)型,參數(shù)列表。靈活編寫(xiě)代碼,萬(wàn)變不離其宗
4.時(shí)間轉(zhuǎn)換:
1.util.date---sql.date:
1.獲取Contact對(duì)象身上的時(shí)間毫秒數(shù),如果沒(méi)有獲取系統(tǒng)時(shí)間的毫秒數(shù),三元運(yùn)算符:條件 ?表達(dá)式1(true): 表達(dá)式2(false)
long time = detail.getCreateTime() == null ? System.currentTimeMillis() : detail.getCreateTime().getTime();
2. 調(diào)用sql.date類(lèi)的帶參構(gòu)造方法將時(shí)間毫秒數(shù)傳入獲取sql包的時(shí)間
new Date(time))
2.sql.date---util.date:
1.獲取sql.date的毫秒數(shù),將其作為參數(shù)傳入util.date的構(gòu)造方法類(lèi)
new java.util.Date(rs.getDate("d.createtime").getTime())
5.屬性對(duì)象:1.sql user表 與 detail表是1對(duì)多關(guān)系, 一個(gè)用戶(hù)可以有多個(gè)通訊錄
2. 在contactdetail類(lèi)放一個(gè)user對(duì)象,將user類(lèi)與contactdetail類(lèi)連接
user.getid() = contactdetail.getuser().getid()
實(shí)現(xiàn)java user類(lèi)與contactdetail類(lèi) 1對(duì)多關(guān)系
sql.userid----contact.user
1.創(chuàng)建user對(duì)象
2.將userid設(shè)置到user對(duì)象身上
3.分析 user的set方法參數(shù)是user對(duì)象,將創(chuàng)建的對(duì)象傳入user的set方法
6.二維數(shù)組:在業(yè)務(wù)層定義方法getAllContact 返回類(lèi)型:Object[][] 參數(shù):useid
1.獲取contactdetail對(duì)象的集合
List<ContactDetail> list = cd.queryContactListByUser(userId);
2.定義數(shù)組長(zhǎng)度,第一個(gè)字段表示通訊錄實(shí)體的個(gè)數(shù),第2個(gè)字段表示通訊錄的信息個(gè)數(shù)
Object[][] datas = new Object[list.size()][8];
3. 循環(huán)數(shù)組 循環(huán)一次第一個(gè)括號(hào)+1,第2個(gè)括號(hào)挨個(gè)放入通訊錄信息
for (int i = 0; i < list.size(); i++) {
ContactDetail detail = list.get(i);
datas[i][0] = detail.getId();
datas[i][1] = detail.getName();
。。。。。。。。。。。。。。。。}
4.返回 datas
eclipse:導(dǎo)入項(xiàng)目:file---import---Existing Projects into Workspace---選擇項(xiàng)目路徑---finish
導(dǎo)入圖片:項(xiàng)目名---src---general---file system---文件路徑---選擇圖片--finish---把圖片移動(dòng)到lib包
生成文檔:項(xiàng)目右鍵---export---java---javadoc---選擇生成路徑---finish
java架包:項(xiàng)目右鍵---export---java---jar file選擇生成路徑----架包名---finish
導(dǎo)入架包:復(fù)制架包到項(xiàng)目---build path
界面插件使用:類(lèi)右鍵---open with---windowbuilder editor---左下角Design按鈕
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。