一:講師管理
介紹:可以實現對講師的分頁展示,多條件組合分頁查詢,對講師的添加,修改,刪除操作。
針對于添加來說,使用requestBody注解,搭配postmapping接收數據,使用service層的對象,調用mapper方法,向數據庫中保存數據。
修改:
先根據講師id,查詢出講師,再去修改
創建時間和更新時間在實體類中使用TabledField注解,實現自動填充。
對講師分頁展示;支持多條件組合查詢教師;
分頁展示:
使用mp的分頁插件,在接口中,通過路徑,接收當前頁和每頁記錄數,接著創建page對象,接收兩個參數,一個是當前頁碼,一個是當前頁的記錄數。調用方法,把page對象傳進去,會將分頁所有數據封裝到這個page對象當中,通過page對象,返回所有數據的一個list集合。
多條件組合帶分頁的查詢:
用戶選擇不同的條件,可以查出不同的教師。
首先要把條件值封裝到vo當中,把vo再傳給接口。(vo中包括講師名稱,級別,開始和結束時間)。
然后會對傳來的條件值進行判空,如果不為空,就拼接條件,使用page方法根據條件,查詢出符合的數據,最后返回數據。
常用注解:
requestBody:前端用json傳遞數據,把數據封裝到對應的對象當中。
需要搭配psot提交;
還要注意傳來的數據是否可以為空,如果可以為空,就要設置required為false
reponseBody:用于返回json數據。
PathVariable:將url中的變量綁定到方法中的參數上。
Value:用來讀取配置文件中的數據,保存到變量中。
上傳講師頭像:
將id和密鑰保存到配置文件當中,使用常量類,讀取配置文件中的內容。
在相關接口中,接收文件變量,使用阿里云的相關方法,先創建出一個oss實例
再獲取一個文件輸入流
調用oss實例中的put方法,實現上傳,返回保存的文件路徑
文件路徑需要手動拼接出來:由桶的名稱+站點名稱+文件名稱
方法的參數有:bucket名稱,輸入流,文件名
使用datetime獲取當前時間,再把當前時間拼接到文件名稱里面,這樣在進行上傳的時候,就可以在阿里云中根據時間,建立相應的文件夾,來對文件進行分類。
問題:
1:如何使用oss服務
在使用oss服務之前,需要在阿里云中創建出bucket,也就相當于一個文件夾,用來存儲相關文件
再得到id和密鑰,只有有了這個,才有相關權限去操作。
再去Java工程中引入相關依賴,就可以操作相關方法,上傳相關文件。
2:多次上傳文件,如果文件名相同會被覆蓋,如何解決
通過使用uuid的random方法,給文件名稱添加唯一的隨機值。
二:課程分類管理
課程分類管理是我負責開發的,負責展示相關課程,進行二級分類展示。
樹形分類展示:
1:首先需要將數據存入到數據庫中
使用的easyexcel,讀取數據是從磁盤中一行一行讀取,而不是將文件一次性讀到內存當中
根據excel的列表頭創建對應的實體類
在接口中獲取文件輸入流
獲取到文件之后,調用easyexcel的read方法進行讀取,參數有輸入流,實體類,監聽器對象
接下來需要實現監聽器這個類:
它是進行一行一行的讀取數據的
監聽器這個類,交給不了spring管理,那么在這個監聽器中,就注入不了其他對象,所以就將其他對象傳給監聽器的構造方法,實現將其他對象注入到這個監聽器類中。
這個類中有兩個方法,一個是invoke方法,用來讀取excel數據。
由于有每一行中第一個數據是一級分類,第二個數據是二級分類
所以就先讀第一個數據,讀取到數據庫中,再讀第二個數據,讀取到數據庫中
在進行讀取時,要進行判斷數據是否重復
是根據名稱和parentid值進行判斷,一級分類的parentid值都是0,二級分類的parentid值是它對應的一節分類的parentid值
2:存入之后,需要給前端返回數據,構建出前端需要的類型的數據
分析:最外層是一個json類型的數組,數組里面又有多個對象,每個對象中,有一級分類,又有一個數組,數組當中又有多個對象,對象中是二級分類。
其實就是最后返回一個list集合,這個集合里面存儲一級分類的對象,在這個對象當中又有一個集合,用來存儲二級分類對象。簡單就是集合里面存對象,對象里面又存集合,
第一步:根據返回數據,建立對應的實體類
第二步: 在兩個實體類之間表示關系&