Java面向?qū)ο蟪绦蛟O(shè)計 課件 項目9 新一線城市智慧交通數(shù)據(jù)采集與治理_第1頁
Java面向?qū)ο蟪绦蛟O(shè)計 課件 項目9 新一線城市智慧交通數(shù)據(jù)采集與治理_第2頁
Java面向?qū)ο蟪绦蛟O(shè)計 課件 項目9 新一線城市智慧交通數(shù)據(jù)采集與治理_第3頁
Java面向?qū)ο蟪绦蛟O(shè)計 課件 項目9 新一線城市智慧交通數(shù)據(jù)采集與治理_第4頁
Java面向?qū)ο蟪绦蛟O(shè)計 課件 項目9 新一線城市智慧交通數(shù)據(jù)采集與治理_第5頁
已閱讀5頁,還剩69頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

項目9新一線城市智慧交通數(shù)據(jù)采集與治理學(xué)習(xí)目標(biāo)知識技能目標(biāo):掌握需求分析的方法能根據(jù)需求分析完成界面原型設(shè)計能用POI導(dǎo)入Excel文件能用對敏感信息進行脫敏處理能用JDBCAPI完成對數(shù)據(jù)庫的操作能用聚合函數(shù)完成數(shù)據(jù)的統(tǒng)計分析能對項目完成打包和部署職業(yè)素養(yǎng)目標(biāo):通過不斷完善方案,培養(yǎng)學(xué)生不斷實踐、追求卓越的職業(yè)素養(yǎng)通過小組的分工協(xié)作,培養(yǎng)學(xué)生善于溝通的技能、提升團隊協(xié)作意識通過反復(fù)優(yōu)化SQL語句,精益求精,避免程序出現(xiàn)SQL注入漏洞任務(wù)9.1系統(tǒng)需求分析和設(shè)計1項目“新一線城市智慧交通數(shù)據(jù)采集與治理”,按照敏捷迭代開發(fā)方法將項目劃分成了需求分析和設(shè)計、系統(tǒng)界面實現(xiàn)、市長熱線等數(shù)據(jù)源數(shù)據(jù)抽取、異常信息清洗、數(shù)據(jù)持久化、分類指標(biāo)計算、系統(tǒng)部署打包七個任務(wù)。任務(wù)1“需求分析和設(shè)計”,主要包含:獲取需求分析、制定開發(fā)計劃、搭建協(xié)同開發(fā)環(huán)境、完成界面原型設(shè)計等。任務(wù)詳解任務(wù)描述技術(shù)準(zhǔn)備微課1-1Java前世今生技能點1:完成需求分析任務(wù)9.1系統(tǒng)需求分析和設(shè)計1在企業(yè)開發(fā)過程中,完成需求分析的流程為:第一步:獲取用戶需求;第二步:整理系統(tǒng)需求;第三步撰寫需求規(guī)格說明書。第一步:獲取用戶需求微課1-1Java前世今生任務(wù)9.1系統(tǒng)需求分析和設(shè)計1常用的獲取用戶需求的方法有八種用戶訪談問卷調(diào)研用戶反饋頭腦風(fēng)暴競品分析文獻(xiàn)分析觀察法數(shù)據(jù)分析法微課1-1Java前世今生任務(wù)9.1系統(tǒng)需求分析和設(shè)計11.直接采集:

用戶自己提需求,得到一手需求。更準(zhǔn)確!

2.間接采集:得到二手需求,經(jīng)過加工過的,效率更高,有可能被曲解。

需求分析方法的分類用戶訪談問卷調(diào)研用戶反饋頭腦風(fēng)暴競品分析文獻(xiàn)分析觀察法數(shù)據(jù)分析法企業(yè)實踐經(jīng)驗:二者結(jié)合全員參與采集,產(chǎn)品經(jīng)理處理微課1-1Java前世今生任務(wù)9.1系統(tǒng)需求分析和設(shè)計1第一步:獲取用戶需求需求分析方法的分類產(chǎn)品規(guī)劃階段:用戶訪談項目早期:

調(diào)查問卷項目實施過程:定性地做上線后優(yōu)化階段:數(shù)據(jù)分析法需求分析貫穿項目開發(fā)整個生命周期,根據(jù)項目的進程,現(xiàn)階段我們應(yīng)該采用哪些方法呢?微課1-1Java前世今生任務(wù)9.1系統(tǒng)需求分析和設(shè)計1第二步:用戶需求轉(zhuǎn)換成系統(tǒng)3.追問用戶遇到的問題挖掘用戶的需求和痛點初學(xué)者的共性問題:直接根據(jù)用戶描述整理需求

1.用心聽不要隨意打斷用戶,不要和用戶起爭執(zhí)

避免偽需求

2.對用戶描述做驗證技巧:概況用戶的話。“你的意思是說....,是這樣的嗎?”微課1-1Java前世今生任務(wù)9.1系統(tǒng)需求分析和設(shè)計1第二步:用戶需求轉(zhuǎn)換成系統(tǒng)行業(yè)需求轉(zhuǎn)換法寶——Y模型用戶需求系統(tǒng)需求轉(zhuǎn)換問題域到方案域的硬核解題思路整理系統(tǒng)需求核心技能點技術(shù)準(zhǔn)備微課1-1Java前世今生技能點2:用UML繪制用例圖任務(wù)9.1系統(tǒng)需求分析和設(shè)計1參與者與用例之間的關(guān)系技術(shù)準(zhǔn)備微課1-1Java前世今生技能點3:界面原型設(shè)計任務(wù)9.1系統(tǒng)需求分析和設(shè)計1技術(shù)準(zhǔn)備微課1-1Java前世今生技能點3:用UML繪制類圖任務(wù)9.1系統(tǒng)需求分析和設(shè)計1教師演示最少知識原則開閉原則里氏替換原則單一職責(zé)原則接口隔離原則依賴倒置原則類設(shè)計的原則任務(wù)實施第一步:制定需求分析方案,完成需求分析

第二步:根據(jù)用戶需求,整理出系統(tǒng)需求

第三步:根據(jù)需求分析結(jié)果,完成界面原型設(shè)計

第四步:完成類設(shè)計

任務(wù)9.1系統(tǒng)需求分析和設(shè)計1AEBCD小組協(xié)作,完成任務(wù)評價測試任務(wù)9.1系統(tǒng)需求分析和設(shè)計1評價指標(biāo)評價標(biāo)準(zhǔn)分值得分需求分析需求分析方法選擇恰當(dāng),準(zhǔn)確獲取用戶需求20

系統(tǒng)需求準(zhǔn)確將用戶需求轉(zhuǎn)換成系統(tǒng)需求20

界面原型根據(jù)需求分析結(jié)果繪制界面原型20

類設(shè)計類設(shè)計符合要求20

團隊協(xié)作團隊協(xié)作完成,溝通有效20

拓展提升任務(wù)9.1系統(tǒng)需求分析和設(shè)計1在敏捷開發(fā)企業(yè)中,傳統(tǒng)的詳盡、冗長的需求規(guī)格說明書往往不被推薦,因為敏捷方法注重靈活性、快速響應(yīng)變化和持續(xù)交付價值。然而,在敏捷開發(fā)中仍然存在對需求和規(guī)格的記錄和管理需求,盡管形式可能有所不同。掃碼查看敏捷開發(fā)企業(yè)中需求規(guī)格說明書的格式。任務(wù)描述用Java實現(xiàn)用戶登錄界面和系統(tǒng)主界面的實現(xiàn)。要求布局合理,方便用戶使用。具體任務(wù)任務(wù)9.2系統(tǒng)界面實現(xiàn)2技術(shù)準(zhǔn)備任務(wù)9.2系統(tǒng)界面實現(xiàn)2技能點1:用JTable類實現(xiàn)在表格中顯示數(shù)據(jù)用JTable創(chuàng)建表格的步驟:第一步:創(chuàng)建一個包含數(shù)據(jù)的二維數(shù)組或TableModel第二步:使用這個數(shù)據(jù)創(chuàng)建JTable第三步:將JTable添加到JScrollPane中第四步:將JScrollPane添加到窗口或面板中任務(wù)9.2系統(tǒng)界面實現(xiàn)2案例:用表格顯示學(xué)生的信息教師演示技術(shù)準(zhǔn)備任務(wù)9.2系統(tǒng)界面實現(xiàn)2技能點2:用BoxLayout實現(xiàn)界面布局使用BoxLayout布局的步驟:第一步:創(chuàng)建容器類對象JPanelpanel=newJPanel();JPanelleftPanel=newJPanel();JPanelrightPanel=newJPanel();第二步:創(chuàng)建BoxLayout的對象//創(chuàng)建BoxLayout的對象,采用水平布局BoxLayoutboxLayout=newBoxLayout(panel,BoxLayout.X_AXIS);第三步:為容器設(shè)置布局panel.setLayout(boxLayout);panel.add(leftPanel);

panel.add(rightPanel);第四步:往容器里添加組件leftPanel.add(newJButton("LeftButton1"));leftPanel.add(newJButton("LeftButton2"));rightPanel.add(newJButton("RightButton1"));任務(wù)9.2系統(tǒng)界面實現(xiàn)2案例:編寫學(xué)生信息管理系統(tǒng)界面教師演示任務(wù)9.2系統(tǒng)界面實現(xiàn)2任務(wù)實施任務(wù)9.2系統(tǒng)界面實現(xiàn)2任務(wù)實施第一步:根據(jù)界面原型圖,創(chuàng)建登錄界面寫出登錄界面用到的組件類和布局管理器類。容器類:

一般組件類:

布局管理器類:

第二步:根據(jù)界面原型圖,創(chuàng)建系統(tǒng)主界面寫出系統(tǒng)主界面用到的組件類和布局管理器類。容器類:

一般組件類:

布局管理器類:

第三步:運行程序任務(wù)9.2系統(tǒng)界面實現(xiàn)2評價測試評價指標(biāo)評價標(biāo)準(zhǔn)分值得分登錄界面界面布局合理,和界面原型一致20

系統(tǒng)主界面采用BoxLayout,界面和原型設(shè)計一致20

菜單根據(jù)原型圖,創(chuàng)建相應(yīng)的菜單20

界面跳轉(zhuǎn)實現(xiàn)登錄后跳轉(zhuǎn)到主界面20

編碼規(guī)范編碼規(guī)范,有合理的注釋20

任務(wù)9.2系統(tǒng)界面實現(xiàn)2拓展提升技能提升1——首選項APIjava.util.prefs.Preferences類用于提供對用戶和系統(tǒng)首選項的持久化存儲支持。這個類允許您以鍵-值對的形式存儲和檢索配置數(shù)據(jù),這些數(shù)據(jù)通常用于保存用戶特定的偏好設(shè)置,如用戶最后處理的文件、窗口的最后位置、字體大小等。Preferences類存儲用戶首選項的特點:(1)提供簡單的鍵-值存儲:Preferences類讓您可以方便地存儲和檢索鍵-值對形式的配置數(shù)據(jù)。(2)持久化存儲:首選項數(shù)據(jù)在用戶會話之間持久化存儲,確保用戶配置的持久性。(3)跨平臺支持:Preferences類的實現(xiàn)會根據(jù)操作系統(tǒng)選擇適當(dāng)?shù)暮蠖舜鎯C制,因此具有跨平臺特性。任務(wù)9.2系統(tǒng)界面實現(xiàn)2拓展提升(1)得到Preferences類的實例//獲取代表當(dāng)前用戶下和節(jié)點名相同的偏好設(shè)置的Preferences實例PreferencesuserPrefs=Preferences.userRoot().node("org.example");//獲得系統(tǒng)級偏好設(shè)置的Preferences的實例PreferencessysPrefs=Preferences.systemRoot();(2)設(shè)置偏好設(shè)置//將變量name中的用戶名保存到"name"中userPrefs.put("name",name);//將變量pwd中的密碼保存到"password"中userPrefs.put("password",pwd);(3)獲取用戶偏好//獲得Preferences的實例PreferencesuserPrefs=Preferences.userRoot().node("org.example");txtName.setText(userPrefs.get("name","admin"));txtPwd.setText(userPrefs.get("password","123456"));Preferences類的用法任務(wù)9.2系統(tǒng)界面實現(xiàn)2案例:為用戶登錄添加記住密碼功能教師演示任務(wù)9.3不同數(shù)據(jù)源數(shù)據(jù)抽取3

根據(jù)任務(wù)需求,需要將“市長熱線”“問政四川”“962122”“信訪件”等不同數(shù)據(jù)源的數(shù)據(jù)抽取到系統(tǒng)中來。本任務(wù)要求:將Excel格式中的數(shù)據(jù)導(dǎo)入到表格中。任務(wù)詳解任務(wù)描述任務(wù)9.3不同數(shù)據(jù)源數(shù)據(jù)抽取3技術(shù)準(zhǔn)備技能點1:認(rèn)識常用的讀取Excel第三方庫

讀取Excel數(shù)據(jù)并將其加載到JTable中,通常采用第三方庫文件來解析Excel文件。常用的開源的第三方庫有ApachePOI、EasyExcel和JExcel等。ApachePOI提供了用于讀取和寫入Excel文件的強大功能EasyExcel主要面向大量數(shù)據(jù)的讀寫場景,提供了流式讀寫Excel的能力,減少了內(nèi)存占用JExcel簡單的Excel操作,JXL是一個輕量級的選擇任務(wù)9.3不同數(shù)據(jù)源數(shù)據(jù)抽取3技術(shù)準(zhǔn)備技能點2:用POI實現(xiàn)導(dǎo)入Excel文件<dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>5.2.3</version></dependency>在pom.xml中配置POI的依賴InputStreamis=newFileInputStream(filename);創(chuàng)建一個文件輸入流Workbookworkbook=newXSSFWorkbook(fis);創(chuàng)建一個XSSFWorkbook對象for(Rowrow:sheet){//rowData存放每一行的數(shù)據(jù)List<Object>rowData=newArrayList<>();將sheet的內(nèi)容存入集合中HSSFRowrow=sheet1.getRow(0);從工作表對象sheet1中得到行對象Sheetsheet=workbook.getSheetAt(0);創(chuàng)建一個Sheet對象任務(wù)9.3不同數(shù)據(jù)源數(shù)據(jù)抽取3案例:讀取Excel文件到JTable中第一步:任務(wù)分析第二步:編碼實現(xiàn)(1)新建一個Maven項目,在pom.xml中配置POI(2)新建ReadExcel類,實現(xiàn)將Excel文件內(nèi)容讀到ArrayList中(3)新建ReadExcelForm類,繼承自JFrame,實現(xiàn)點擊按鈕,將Excel文件內(nèi)容讀到JTable中第三步:運行程序任務(wù)9.3不同數(shù)據(jù)源數(shù)據(jù)抽取3任務(wù)實施第一步:任務(wù)分析

第二步:編碼實現(xiàn)(1)新建JavaMaven項目,在pom.xml中配置POI

(2)編寫讀取Excel的類,寫出核心語句:

(3)為系統(tǒng)主界面添加事件監(jiān)聽,實現(xiàn)抽取不同事件源的數(shù)據(jù)。寫出核心語句:

第三步:運行程序AEBCD小組協(xié)作,完成任務(wù)任務(wù)9.3不同數(shù)據(jù)源數(shù)據(jù)抽取3評價測試評價指標(biāo)評價標(biāo)準(zhǔn)分值得分Maven配置正確在pom.xml中配置POI10

事件監(jiān)聽器類正確識別事件源、編寫事件監(jiān)聽器類20

讀取Excel正確實現(xiàn)將Excel文件讀到集合中25

表格顯示正確將集合中的內(nèi)容在表格中顯示25

編碼規(guī)范變量命名規(guī)范、有合理的注釋20

任務(wù)9.3不同數(shù)據(jù)源數(shù)據(jù)抽取3技術(shù)拓展技能提升1——文件加鎖機制

多個進程或者多個線程同時讀寫同一個文件時,為保證并發(fā)訪問的數(shù)據(jù)一致性和完整性,需要采用某種方式進行通信。文件鎖機制可以有效地解決這個問題。java.nio.channels.FileChannel和FileLock類可以實現(xiàn)對文件加鎖,具體步驟:第一步:打開文件并獲取FileChannel第二步:獲取文件鎖第三步:檢查是否成功獲取鎖第四步:執(zhí)行文件操作第五步:釋放文件鎖第六步:關(guān)閉FileChannel和文件任務(wù)9.3不同數(shù)據(jù)源數(shù)據(jù)抽取3案例:將用戶偏好信息寫入文件,保證數(shù)據(jù)的一致性和完整性第一步:任務(wù)分析任務(wù)9.2拓展提升中介紹的首選項API已經(jīng)解決了同步和并發(fā)的問題,當(dāng)需要自己管理文件讀寫時,需要在程序中用FileChannel和FileLock類為文件加鎖或者釋放鎖。第二步:編碼實現(xiàn)(1)新建一個Java項目(2)新建一個類,用于實現(xiàn)寫文件時為文件加鎖,寫完后釋放鎖。(3)編寫測試類第三步:運行程序教師演示任務(wù)9.4異常信息數(shù)據(jù)清洗4任務(wù)描述

在上一個任務(wù)中實現(xiàn)從不同數(shù)據(jù)源獲取到數(shù)據(jù)并將其轉(zhuǎn)換成集合的形式在JTable中顯示,接下來需要對數(shù)據(jù)做以下處理:(1)對敏感信息進行隱藏(2)對缺失的信息進行補全(3)對日期和時間采用標(biāo)準(zhǔn)格式顯示,日期采用“yyyy-MM-dd”的格式,時間采用“hh:mm:ss”任務(wù)詳解任務(wù)9.4異常信息數(shù)據(jù)清洗4技術(shù)準(zhǔn)備技能點1:敏感信息隱藏技術(shù)第7頁:1.4.5在相關(guān)法律法規(guī)的規(guī)范下,合法獲取數(shù)據(jù),保護隱私數(shù)據(jù)。任務(wù)9.4異常信息數(shù)據(jù)清洗4技術(shù)準(zhǔn)備技能點1:敏感信息隱藏技術(shù)數(shù)據(jù)采集的合規(guī)條款任務(wù)9.4異常信息數(shù)據(jù)清洗4技術(shù)準(zhǔn)備保護隱私數(shù)據(jù)主要技術(shù)1342對敏感數(shù)據(jù)進行替換、失真等變換降低數(shù)據(jù)敏感度,保留其可用性和統(tǒng)計性等特征。數(shù)據(jù)脫敏一種新型密碼技術(shù),密文具有分析、統(tǒng)計性特征同態(tài)加密個人信息記錄的匿名,無法找到自然人,且不能復(fù)原匿名化有嚴(yán)格的數(shù)學(xué)模型,核心思想是隨機化算法,為每個采集數(shù)據(jù)加入噪聲差分隱私任務(wù)9.4異常信息數(shù)據(jù)清洗4技術(shù)準(zhǔn)備技能點2:為電話號碼進行脫敏處理實現(xiàn)對電話號碼進行脫敏處理,采用截取子串方法subString()substring方法介紹:publicStringsubstring(intbeginIndex)返回一個字符串,該字符串是此字符串的子字符串。

子字符串以指定索引處的字符開頭,并擴展到該字符串的末尾。示例代碼:以下代碼取出電話號碼的后四位Stringphone=;StringsuffPhone=phone.substring(7);任務(wù)9.4異常信息數(shù)據(jù)清洗4案例:鍵盤輸入姓名和電話號碼,實現(xiàn)對姓名和電話號碼隱藏教師演示第一步:任務(wù)分析(1)實現(xiàn)姓名的隱藏,需要先統(tǒng)計姓名的長度,如果姓名長度為2,則第二個字符用*,如果長度大于或者等于3,先取第一個字符,再去最后一個字符,中間字符用*表示。(2)實現(xiàn)電話號碼phone的隱藏:先取電話號碼的前三位,再取電話號碼的后四位,再和“***”拼接。第二步:編碼實現(xiàn)創(chuàng)建一個Java項目,先輸入姓名和電話號碼,再對姓名和電話號碼進行脫敏處理,最后再輸出脫敏后的數(shù)據(jù)。第三步:運行程序任務(wù)9.4異常信息數(shù)據(jù)清洗4技術(shù)準(zhǔn)備技能點3:對日期進行標(biāo)準(zhǔn)化處理不同數(shù)據(jù)來源的數(shù)據(jù),日期格式可能不一樣。對日期格式進行處理需要用到SimpleDateFormat類,該類位于java.text包中,主要用于解析和格式化日期,允許用戶以自定義的方式顯示日期和時間。第一步:任務(wù)分析(1)獲取系統(tǒng)當(dāng)前時間:newjava.util.Date();(2)按照指定格式顯示時間:SimpleDateFormatformat=newSimpleDateFormat("yyyy-MM-ddhh:mm:ss");第二步:編碼實現(xiàn)publicstaticvoidmain(String[]args){

SimpleDateFormatformat=newSimpleDateFormat("yyyy-MM-ddhh:mm:ss");

StringdateStr=format.format(newDate());

System.out.println(dateStr);}第三步:運行程序教師演示案例:按照“yyyy-MM-ddhh:mm:ss”的格式顯示系統(tǒng)當(dāng)前時間任務(wù)9.4異常信息數(shù)據(jù)清洗4任務(wù)實施AEBCD小組協(xié)作,完成任務(wù)第一步:完成對數(shù)據(jù)中的敏感信息脫敏處理識別哪些是敏感信息:

采用的敏感信息隱藏技術(shù):

核心代碼:

第二步:完成對缺失信息的補全識別缺失信息有哪些:

核心代碼:

第三步:對所有日期進行標(biāo)準(zhǔn)化處理核心代碼:

第四步:運行程序任務(wù)9.4異常信息數(shù)據(jù)清洗4評價測試評價指標(biāo)評價標(biāo)準(zhǔn)分值得分創(chuàng)建項目正確創(chuàng)建Java項目10

敏感信息隱藏對電話號碼等敏感信息隱藏30

信息補全實現(xiàn)對缺失信息補全30

日期處理所有日期和時間按照“yyyy-MM-ddhh:mm:ss”顯示20

編碼規(guī)范變量命名規(guī)范、有合理的注釋10任務(wù)9.4異常信息數(shù)據(jù)清洗4任務(wù)實施AEBCD小組協(xié)作,完成任務(wù)第一步:完成對數(shù)據(jù)中的敏感信息脫敏處理識別哪些是敏感信息:

采用的敏感信息隱藏技術(shù):

核心代碼:

第二步:完成對缺失信息的補全識別缺失信息有哪些:

核心代碼:

第三步:對所有日期進行標(biāo)準(zhǔn)化處理核心代碼:

第四步:運行程序任務(wù)9.4異常信息數(shù)據(jù)清洗4技術(shù)拓展JDK15中新增了文本塊特性,可以更簡潔地表示多行的字符串常量。文本塊以"""開頭,后面是一個換行符,并以"""結(jié)束。比如:Stringstr2="""HelloWorld""";該字符串等價于:Stringstr2="Hello\nWorld\n";任務(wù)9.5數(shù)據(jù)持久化5任務(wù)描述

按照需求將不同數(shù)據(jù)源的數(shù)據(jù)清洗完成后,需要將符合要求的數(shù)據(jù)保存到數(shù)據(jù)庫中永久存放起來,便于后期查詢、分析和統(tǒng)計。本任務(wù)的要求是運用JDBCAPI將數(shù)據(jù)保存到數(shù)據(jù)庫中。任務(wù)詳解任務(wù)9.5數(shù)據(jù)持久化5技術(shù)準(zhǔn)備技能點1:識別JDBCAPI中常用的類和接口DriverManager類是JDBCAPI的管理層,提供對JDBC驅(qū)動程序(Driver)的管理。Connection接口是指應(yīng)用程序和數(shù)據(jù)庫的連接。Statement接口:由Connection產(chǎn)生、負(fù)責(zé)執(zhí)行SQL語句PreparedStatement接口:由Connection產(chǎn)生、負(fù)責(zé)執(zhí)行預(yù)編譯的SQL語句CallableStatement接口:由Connection產(chǎn)生、負(fù)責(zé)執(zhí)行存儲過程

ResultSet:負(fù)責(zé)保存Statement執(zhí)行后所產(chǎn)生的查詢結(jié)果任務(wù)9.5數(shù)據(jù)持久化5技術(shù)準(zhǔn)備技能點2:用Statement接口實現(xiàn)查詢信息Statement接口用于在已經(jīng)建立的連接的基礎(chǔ)上向數(shù)據(jù)庫發(fā)送要執(zhí)行的SQL語句。Statement的對象用于執(zhí)行不帶參數(shù)的簡單的SQL語句,它由Connection接口的createStatement()方法生成。方法2方法1Statementstmt=con.createStatement(inttype,intconcurrency);Statement

stmt=con.createStatement();任務(wù)9.5數(shù)據(jù)持久化5案例:查詢包含有指定書名的所有圖書教師演示第一步:任務(wù)分析先加載驅(qū)動程序,其次,建立和數(shù)據(jù)源的連接,再次,創(chuàng)建Statement,最后執(zhí)行語句。(1)加載驅(qū)動程序:Class.forName("com.mysql.jdbc.Driver");(2)確定和數(shù)據(jù)源連接的url,用戶名和密碼url="jdbc:mysql://localhost:3306/mybookshop";userName="test01";pwd="123456";(3)創(chuàng)建Statement對象Statementstmt=connection.createStatement();Stringsql="select*frombookswheretitlelike'%"+title+"%'";(4)執(zhí)行語句

ResultSetrs=stmt.executeQuery(sql);第二步:編碼實現(xiàn)第三步:運行程序任務(wù)9.5數(shù)據(jù)持久化5技術(shù)準(zhǔn)備技能點3:用PreparedStatement接口實現(xiàn)刪除信息PreparedStatement接口是Statement接口的子接口,用于處理需要被多次執(zhí)行的帶有輸入?yún)?shù)的SQL語句。PreparedStatement執(zhí)行時已經(jīng)將SQL語句編譯完成,省去了編譯SQL語句的時間,因此效率要比Statement高。示例代碼//編寫要執(zhí)行的SQL語句

Stringsql="deletefrombookswhereisbn=?";

//得到PreparedStatement的實例PreparedStatementstmt=connection.prepareStatement(sql);//設(shè)置參數(shù)stmt.setString(1,isbn);//執(zhí)行語句intcount=stmt.executeUpdate();任務(wù)9.5數(shù)據(jù)持久化5案例:刪除指定isbn的圖書教師演示第一步:任務(wù)分析第二步:編碼實現(xiàn)publicbooleandeleteBookByIsbn(Stringisbn){Stringsql="deletefrombookswhereisbn=?";try{PreparedStatementstmt=connection.prepareStatement(sql);stmt.setString(1,isbn);intcount=stmt.executeUpdate();if(count>0){returntrue;}}catch(SQLExceptione){......}returnfalse;}第三步:運行程序任務(wù)9.5數(shù)據(jù)持久化5技術(shù)準(zhǔn)備技能點4:用CallableStatement接口訪問存儲過程CallableStatement接口繼承自PreparedStatement接口,用于執(zhí)行數(shù)據(jù)庫的存儲過程。形式2形式1{call存儲過程名()}帶參數(shù)的存儲過程存儲過程的調(diào)用有兩種形式不帶參數(shù)的存儲過程{call存儲過程名(?,?,……)}任務(wù)9.5數(shù)據(jù)持久化5技術(shù)準(zhǔn)備技能點5:將數(shù)據(jù)庫連接信息寫入屬性文件數(shù)據(jù)庫訪問需要用到的JDBC驅(qū)動程序名稱、URL、用戶名和密碼等信息是寫到程序中的,當(dāng)用戶要連接的數(shù)據(jù)庫發(fā)生改變時,就需要修改程序,降低了程序的可擴展性。因此,在實際應(yīng)用中,我們通常把上面的信息寫到擴展名為properties的屬性文件中,提高程序可擴展性。第一步在項目的“resources”下新建屬性文件“perties”,里面包含Java連接數(shù)據(jù)庫的驅(qū)動程序、url、userName和password第二步InputStreamin=ClassLoader.getSystemResourceAsStream(name);Propertiesp=newProperties();p.load(in);在Java項目中新建屬性文件將屬性文件的內(nèi)容讀取到Properties中任務(wù)9.5數(shù)據(jù)持久化5案例:修改UserDao類,實現(xiàn)從屬性文件中讀取數(shù)據(jù)庫連接信息教師演示第一步:在項目的“resources”下,新建屬性文件“perties”第二步:在UserDao類中,將屬性文件內(nèi)容讀取到Properties中核心代碼://將屬性文件perties的內(nèi)容讀取到Properties對象中Propertiesp=newProperties();p.load(UserDao.class.getResourceAsStream("/perties"));任務(wù)9.5數(shù)據(jù)持久化5技術(shù)準(zhǔn)備技能點6:編寫數(shù)據(jù)庫訪問工具類對數(shù)據(jù)庫的增刪改查操作都需要按照相同的步驟來完成,因此,在程序中會出現(xiàn)大量重復(fù)的代碼。因此,可以編寫數(shù)據(jù)庫訪問工具類,將驅(qū)動加載、得到鏈接和釋放鏈接的操作放到這個工具類中,在DAO類中,需要鏈接時,從工具類中去取,這樣可以避免代碼冗余。任務(wù)9.5數(shù)據(jù)持久化5案例:編寫數(shù)據(jù)庫鏈接工具類,簡化數(shù)據(jù)庫訪問教師演示第一步:編寫屬性文件在項目的“Resources”下新建屬性文件perties第二步:編寫數(shù)據(jù)庫鏈接工具類將工具類放到org.example.util包中,在靜態(tài)語句塊中完成驅(qū)動加載和獲取連接,包含得到連接和關(guān)閉連接的靜態(tài)方法。核心代碼:publicclassDataBaseUtils{staticConnectionconnection;static{//加載驅(qū)動程序}publicstaticConnectiongetConnection(){returnconnection;}第三步:修改UserDao類和BookDao類任務(wù)9.5數(shù)據(jù)持久化5任務(wù)實施AEBCD小組協(xié)作,完成任務(wù)第一步:任務(wù)分析1.分析完成該任務(wù)需要用到的數(shù)據(jù)庫連接信息2.要用到的JDBCAPI中的哪些接口和類第二步:編碼實現(xiàn)寫出操作數(shù)據(jù)庫的核心語句第三步:運行程序任務(wù)9.5數(shù)據(jù)持久化5評價測試評價指標(biāo)評價標(biāo)準(zhǔn)分值得分創(chuàng)建項目正確創(chuàng)建Java項目10

讀取屬性文件正確定義屬性文件20

數(shù)據(jù)庫工具類正確編寫數(shù)據(jù)庫工具類25

寫數(shù)據(jù)庫正確將清洗后的數(shù)據(jù)寫入數(shù)據(jù)庫25

編碼規(guī)范變量命名規(guī)范、有合理的注釋20任務(wù)9.5數(shù)據(jù)持久化5技術(shù)拓展——數(shù)據(jù)庫連接池技術(shù)什么是池化技術(shù)數(shù)據(jù)庫連接登錄認(rèn)證同步數(shù)據(jù)到BI平臺BI平臺池化技術(shù)ConnConnConnConn任務(wù)9.5數(shù)據(jù)持久化5技術(shù)拓展——數(shù)據(jù)庫連接池技術(shù)常用數(shù)據(jù)庫連接池技術(shù)DRUID:是阿里巴巴提供的開源連接池,是目前最好用的連接池常用連接池DBCPC3P0DRUID任務(wù)9.6分類等指標(biāo)計算6任務(wù)描述

數(shù)據(jù)保存到數(shù)據(jù)庫之后,可以對數(shù)據(jù)做統(tǒng)計分析。本任務(wù)要求:1.統(tǒng)計分析投訴類別總量。2.統(tǒng)計分析投訴來源總量。3.統(tǒng)計連續(xù)兩個月投訴量增長的類別。任務(wù)詳解任務(wù)9.6分類等指標(biāo)計算6技術(shù)準(zhǔn)備技能點1:使用聚合函數(shù)進行統(tǒng)計Java中,完成對數(shù)據(jù)庫中的數(shù)據(jù)進行統(tǒng)計,會用到JDBCAPI對數(shù)據(jù)庫進行查詢操作,進行統(tǒng)計分析,會用到數(shù)據(jù)庫的計數(shù)、求和、求平均等聚合函數(shù)。常用聚合函數(shù)4MAX()3AVG()用于計算某列的總和用于計算某列的平均值返回某列的最大值返回某列的最小值用于計算表中的記錄數(shù)或某一列中非NULL值的數(shù)量。1COUNT()2SUM()5MIN()任務(wù)9.6分類等指標(biāo)計算6案例:統(tǒng)計MyBookShop數(shù)據(jù)庫中價格高于平均價格的圖書的數(shù)量教師演示第一步:任務(wù)分析(1)統(tǒng)計價格高于平均價格的圖書數(shù)量的SQL語句為:selectcount(*)frombookswhereUnitPrice>(selectavg(UnitPrice)frombooks)(2)用到的主要類:數(shù)據(jù)庫工具類:DataBaseUtils,實體類:Books,DAO類:BookDao第二步:編碼實現(xiàn)(1)新建一個Java項目,導(dǎo)入Java連接MySQL的驅(qū)動程序(2)在項目“resources”下新建一個屬性文件perties(3)新建Books類,屬性和數(shù)據(jù)庫中Books表的字段一致(4)新建DataBaseUtils類(5)新建BookDao類,實現(xiàn)統(tǒng)計價格高于平均價格的圖書數(shù)量第三步:運行程序任務(wù)9.6分類等指標(biāo)計算6技術(shù)準(zhǔn)備技能點2:在FineBI平臺展示統(tǒng)計信息從多種數(shù)據(jù)源導(dǎo)入,包括數(shù)據(jù)庫、Excel文件等。選擇合適的數(shù)據(jù)源,并將數(shù)據(jù)導(dǎo)入FineBI的數(shù)據(jù)模型中第一步:導(dǎo)入數(shù)據(jù)根據(jù)數(shù)據(jù)的性質(zhì)和展示需求,選擇合適的圖表類型第三步:選擇圖表類型根據(jù)需要,可以添加計算指標(biāo)或進行數(shù)據(jù)的交叉分析第五步:綁定數(shù)據(jù)通過拖拽組件的方式,在即時分析頁面快速構(gòu)建你的報表或儀表盤第二步:創(chuàng)建報表或儀表盤設(shè)置圖表的標(biāo)題、坐標(biāo)軸標(biāo)簽、圖例等屬性,添加篩選條件、排序方式和匯總方式,以便更好地展示數(shù)據(jù)。第四步:配置組件屬性根據(jù)需求選擇合適的布局方式,并對組件進行微調(diào)以達(dá)到最佳的展示效果第六步:調(diào)整布局完成報表或儀表盤的創(chuàng)建后,將其保存并分享給其他人查看第七步:保存與分享任務(wù)9.6分類等指標(biāo)計算6任務(wù)實施AEBCD小組協(xié)作,完成任務(wù)第一步:統(tǒng)計分析投訴類別總量寫出操作數(shù)據(jù)庫的核心語句:

第二步:統(tǒng)計分析投訴來源總量寫出操作數(shù)據(jù)庫的核心語句:

第三步:統(tǒng)計連續(xù)兩個月投訴量增長的類別寫出操作數(shù)據(jù)庫的核心語句:

第四步:在FineBI平臺中展示數(shù)據(jù)任務(wù)9.7系統(tǒng)測試和打包7任務(wù)描述

項目功能開發(fā)過程中,需要對系統(tǒng)功能進行單元測試,系統(tǒng)功能完成后,會交給專門的測試部門或者測試公司完成測試,測試通過后,需要對項目進行打包和部署。軟件測試教材中會專門講解軟件測試的方法。本任務(wù)主要完成:(1)通過單元測試,完成對系統(tǒng)功能的測試(2)將項目打包生成可執(zhí)行jar任務(wù)詳解任務(wù)9.7系統(tǒng)測試和打包7技術(shù)準(zhǔn)備技能點1:JUnit單元測試單元測試的作用主要是為了確保代碼中的各個單元(通常是一個方法或類)的功能和邏輯是正確的。JUnit是一個流行的Java單元測試框架,使用JUnit進行單元測試的步驟:編寫需要測試的業(yè)務(wù)類或方法。這些代碼應(yīng)該實現(xiàn)特定的功能或邏輯第二步:編寫業(yè)務(wù)代碼為每個需要測試的類或方法創(chuàng)建一個對應(yīng)的測試類。測試類的命名通常遵循一定的規(guī)范,如以“Test”結(jié)尾,并包含被測試類的名稱。在Maven項目中,測試類包含在test文件夾中。第三步:定義測試類<dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.13.2</version><scope>test</scope></dependency>第一步:導(dǎo)入JUnit依賴(1)方法聲明必須是public修飾的。(2)方法沒有返回值(返回類型為void)。(3)方法沒有參數(shù)。(4)方法上需要添加@Test注解,以標(biāo)識這是一個JUnit測試方法。第四步:編寫測試方法01020304任務(wù)9.7系統(tǒng)測試和打包7技術(shù)準(zhǔn)備技能點2:用jar命令完成項目的打包可以將一個項目打包成可執(zhí)行的Jar包,也可以將項目中的部分文件打包供其他程序使用。JDK安裝目錄的bin目錄中提供了jar命令完成打包工作,也可以用IDEA的快速打包。1.用jar命令打包語法:jar{ctxui}[vfmn0PMe][jar-file][manifest-file][entry-point][-Cdir]files...示例代碼:將兩個類文件歸檔到一個名為classes.jar的檔案中jarcvfclasses.jarFoo.classBar.class示例代碼:使用現(xiàn)有的清單文件'mymanifest'并將foo/

溫馨提示

  • 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)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論