Java專案考試系統總結
此文章只作為本人的實訓總結。
做一個Java專案雖然很難,主要還是因為此前並未深入的學習Java,也沒有人帶領學習,但是實訓總歸是結束了,結束之後也需進行總結。
一、工程結構應用分層
1、Java專案中的命名java.com.sicau(川農考試系統)
命名也是需要有科學性的,
2、分為5個package
-
分別為common、controller、dao、entity、service
-
common層:一些工具包,包括時間倒計時處理工具、password的加密與解密、請求資料返回之後的資訊
-
controller層:Controller層負責具體的業務模組流程的控制,在此層裡面要呼叫Serice層的介面來控制業務流程,控制的配置也同樣是在Spring的配置檔案裡面進行,針對具體的業務流程,會有不同的控制器,我們具體的設計過程中可以將流程進行抽象歸納,設計出可以重複利用的子單元流程模組,這樣不僅使程式結構變得清晰,也大大減少了程式碼量。
自己的理解:如命是一個控制器,Controler負責請求轉發,接受頁面過來的引數,傳給Service處理,接到返回值,再傳給頁面。
-
dao層:DAO層主要是做資料持久層的工作,負責與資料庫進行聯絡的一些任務都封裝在此,DAO層的設計首先是設計DAO的介面,然後在Spring的配置檔案中定義此介面的實現類,然後就可在模組中呼叫此介面來進行資料業務的處理,而不用關心此介面的具體實現類是哪個類,顯得結構非常清晰,DAO層的資料來源配置,以及有關資料庫連線的引數都在Spring的配置檔案中進行配置。
自己的理解:資料訪問層,全稱為Data Access Object,屬於一種比較底層,比較基礎的操作,具體到對於某個表的增刪改查,也就是說某個DAO一定是和資料庫的某一張表一一對應的,其中封裝了增刪改查基本操作,建議DAO只做原子操作,增刪改查
-
entity層:就是屬性類,通常定義在model層裡面 ,entity層也可被認為作為是model層。一般的實體類對應一個數據表,其中的屬性對應資料表中的欄位。(說白了就是為了讓程式設計師在對資料庫操作的時候不用寫SQL語句,就是一個數據庫表生成一個類,這樣做對資料庫操作起來方便,編寫程式碼較少 提高效率,可以使程式設計師專注邏輯關係
好處:
1.對物件實體的封裝,體現OO思想。
2.屬性可以對欄位定義和狀態進行判斷和過濾
3.把相關資訊用一個實體類封裝後,我們在程式中可以把實體類作為引數傳遞,更加方便
-
service層:Service層主要負責業務模組的邏輯應用設計。同樣是首先設計介面,再設計其實現的類,接著再Spring的配置檔案中配置其實現的關聯。這樣我們就可以在應用中呼叫Service介面來進行業務處理。Service層的業務實現,具體要呼叫到已定義的DAO層的介面,封裝Service層的業務邏輯有利於通用的業務邏輯的獨立性和重複利用性,程式顯得非常簡潔
自己的理解:相對具體的業務邏輯服務層,也被稱為服務,粗略的理解就是對一個或多個DAO進行的再次封裝,封裝成一個服務,所以這裡也就不會是一個原子操作了,需要事物控制
3、思想很重要!程式碼是基於思想來敲的
二、介面
service層中的介面,對應service中serviceImpl的package。
介面的好處:
- 減少程式碼的書寫(上邊分析的程式碼過載)
- 提高了程式碼的可維護性和擴充套件性
- 在團隊合作中,程式碼的規範性
三、資料庫語句
- mapper:是mybtis框架的對映用到,運用SQL語句與mapper對映檔案在dao層用
- 一些資料庫語句:
挑選語句:select
-
SELECT * FROM grade WHERE id=#{id} and user_id=#{userId} AND paper_id=#{paperId} AND score=#{score}
-
SELECT * FROM paper WHERE id=#{paperId}
-
SELECT * FROM paper WHERE id=#{paperId} AND title = #{title} AND title_time=#{testTime}
插入語句:
-
INSERT INTO paper VALUE (null ,#{title},#{tsetTime})
-
INSERT INTO grade VALUE (null,#{userId},#{paperId},#{score})
刪除語句:
-
DELETE from paper where id = #{paperId}
-
DELETE from question where id = #{questionId}
更新語句:
-
UPDATE question set title = #{title} , option_a = #{optionA},option_b = #{optionB},option_c = #{optionC},option_d = #{optionD} where id = #{id}
-
UPDATE paper set title = #{title} , title_time=#{tsetTime} WHERE id=#{paperId}