周旺 吳昌平 李賢和
摘 要:隨著互聯(lián)網(wǎng)的發(fā)展,越來越多的高校選擇線上填取信息,比如畢業(yè)設(shè)計的師生雙選系統(tǒng)。當(dāng)學(xué)生選擇自己的老師之后,老師通過當(dāng)前被選擇的學(xué)生來決定選擇誰,這樣就完成了師生雙選。雙選功能給學(xué)生和老師帶來很大的方便,越來越多的高校使用這款軟件,也反映著時代的不斷進(jìn)步和發(fā)展。
關(guān)鍵詞:師生雙選;數(shù)據(jù)庫;SpringBoot;Lombok;MybatisPlus
1 師生雙選系統(tǒng)設(shè)計和前端介紹
1.1? 功能介紹
進(jìn)入登錄界面,有3個選項,分別為學(xué)生、老師、管理員。管理員可以新增和修改老師學(xué)生的信息,可以查看到老師的被選課情況和學(xué)生當(dāng)前是否已經(jīng)被選擇,如果學(xué)生已經(jīng)被選擇,那么可以查看當(dāng)前學(xué)生的成績。進(jìn)入學(xué)生界面可以看見當(dāng)前老師可選擇的剩余數(shù)量(見圖1),比如選擇了兩位老師之后,再進(jìn)入兩位老師的界面(見圖2),如果其中一位老師選擇該學(xué)生,那么另外的老師不能選擇該學(xué)生,這樣就可以實現(xiàn)師生雙選的功能。
師生雙選系統(tǒng)對密碼采用了md5加密處理,保證了數(shù)據(jù)不會被盜取。整個系統(tǒng)使用了攔截器,當(dāng)請求出現(xiàn)錯誤的時候會把錯誤信息反饋到前端頁面[1-3]。
1.2? 前端設(shè)計
相比于傳統(tǒng)的html,css,js,師生雙選系統(tǒng)采用了vue框架,請求方式為ES6的axios請求,UI為Element-ui。相比于傳統(tǒng)的前端設(shè)計語言,vue的優(yōu)勢在于方便,性能更好,使用組件能夠極大地提高開發(fā)效率。vue主要的功能有axios、router、element-ui、攔截器、信息校驗,通過這些功能模塊的使用,保證了開發(fā)效率的快速提高。
2 后端設(shè)計與實現(xiàn)
2.1? 數(shù)據(jù)庫設(shè)計
數(shù)據(jù)庫選擇的版本為5.7版本。該系統(tǒng)主要的數(shù)據(jù)庫有學(xué)生、老師、學(xué)生-老師、分別表示學(xué)生個人信息、老師個人信息、學(xué)生和老師的雙選信息。在學(xué)生-老師這個表中,設(shè)立choose值,表示當(dāng)choose等于null的時候,該學(xué)生沒有被老師選擇,當(dāng)choose等于1的時候,表示該學(xué)生已經(jīng)被其中老師選擇,并且刪除該學(xué)生choose值為null的所有信息。
2.2? Lombok設(shè)計
在本項目中,采用Lombok提高代碼的使用,讓POJO代碼更加簡潔,不僅在BO對象,在設(shè)計模式中也有大量使用。通過使用maven項目將Lombok的相關(guān)依賴放入到pom.xml中。相對于傳統(tǒng)的Spring代碼,對每個JavaBean設(shè)立Getter,Setter,HashCode等模板代碼,但通過lombok的注解@Data,@Builder就可以代替這些代碼。打印日志時使用@Slf4j,這些極大地提高了代碼開發(fā)效率,但缺點是代碼可讀性和可調(diào)式性較低,而且當(dāng)JDK版本進(jìn)行升級時,Lombok某些特性就會受到影響。
2.3? MybatisPlus設(shè)計
2.3.1 MybatisPlus的介紹
MybatisPlus是Mybatis的增加版本,對Mybatis只增加,不修改,無侵入,損耗小的特性讓MybatisPlus更好地使用在項目當(dāng)中。通過內(nèi)置的Mapper和通用的Service可以讓少量的代碼實現(xiàn)大部分的CRUD操作,滿足大多數(shù)接口的數(shù)據(jù)請求。另外還包括主鍵自動生成,支持ActiveRecord模式,內(nèi)置的分頁插件、代碼生成器、性能分析插件、分頁插件,支持多種數(shù)據(jù)庫語言,包括MYSQL,Oracle等。
2.3.2 MybatisPlus的安裝和配置
通過MybatisPlus的官網(wǎng)地址,將主要相關(guān)依賴下載到pom.xml當(dāng)中,將注意MYSQL的版本號,將數(shù)據(jù)庫的配置信息放入到配置文件application.properties,或者建立yaml文件,也可以將數(shù)據(jù)庫的信息放入其中。
2.3.3 SpringBoot和MybatisPlus實現(xiàn)雙選系統(tǒng)部分功能
先編寫JsonData類,里面包含返回成功的方法和失敗的方法,作用就是將從后端返回的數(shù)據(jù)打包放到JsonData中返回到前端,這樣前端就可以通過接口返回的內(nèi)容進(jìn)行判斷。
比如在學(xué)生選擇老師的過程中,首先編寫DO類,使用@Data將學(xué)生和老師的成員變量進(jìn)行包裝,實現(xiàn)過程如下:controller層→service層→DO層→Mapper層,其中Mapper層要繼承BaseMapper,通過BaseMapper可以通過內(nèi)置方法來對數(shù)據(jù)庫進(jìn)行操作,減少了代碼量,實現(xiàn)CRUD功能。
2.3.4 MybatisPlus分頁插件的使用
分頁在前端頁面中使用次數(shù)很多,在項目文件中建立config文件夾,在文件夾中創(chuàng)建MybatisPlusInterceptor的插件對象,就是通過攔截器將MYSQL的數(shù)據(jù)進(jìn)行相同批次的攔截。在單元測試當(dāng)中對分頁進(jìn)行測試,建立QueryWrapper<>()對象,將參數(shù)信息包裝起來,再通過Page<>對象將數(shù)據(jù)計算出來,就可以獲取當(dāng)前的頁數(shù)和當(dāng)前頁內(nèi)容的大小。
2.3.5 MybatisPlus代碼生成器
代碼生成器是MybatisPlus的核心,在開發(fā)過程中使用次數(shù)很多,大大地提高了寫代碼的效率。相比于Mybatis的代碼生成器,MybatisPlus強大了很多,它可以自動生成Controller,Service,DO,Mapper,Entity,這些文件生成的前提是連接數(shù)據(jù)庫,但也要對該生成的文件進(jìn)行修改,因為好多都是固定生成,有些配置不能使用,會導(dǎo)致后續(xù)的耦合性高,成本太大,不利于后臺的維護(hù)。
2.3.6 MybatisPlus日志打印
日志就是記錄信息。在上線的時候,通過日志打印將用戶信息輸出,這樣當(dāng)系統(tǒng)進(jìn)行維護(hù)的時候,可以對沒有用的數(shù)據(jù)進(jìn)行刪除,防止磁盤占滿。在Mybatisplus中,使用@Slf4j可以將數(shù)據(jù)打印出來,而且在單元測試的時候,可以看到CRUD的具體操作過程。
3 后端其他設(shè)計
使用IDEA來編譯后端代碼,因為IDEA有很多的自動化代碼補全功能。使用PostMan來對接口進(jìn)行測試。用maven項目來打包項目,使用maven可以提高開發(fā)效率,比如當(dāng)引用某個框架的時候,就可以通過導(dǎo)入相關(guān)依賴來使用框架,在配置maven項目時,可以將阿里云的項目地址來進(jìn)行本地下載,這樣在導(dǎo)入依賴的時候可以降低運行的時間。
4 結(jié)語
相比如傳統(tǒng)的jsp和javaweb,vue+springboot讓整個系統(tǒng)性能更加穩(wěn)定,一個項目是通過策劃、建模構(gòu)建出來的,根據(jù)用戶需要不斷地完善功能,所以在開發(fā)過程中,要增加功能來維護(hù)線上,對系統(tǒng)整個數(shù)據(jù)進(jìn)行分配。在項目開始的時候,選擇一個好的框架極其重要,要實現(xiàn)系統(tǒng)高內(nèi)聚低耦合,讓系統(tǒng)更加完善。
[參考文獻(xiàn)]
[1]鐘茂生,王明文.軟件設(shè)計模式及其使用[J].計算機應(yīng)用,2002(8):34-37.
[2]馬曉虎.基于B/S結(jié)構(gòu)的通用學(xué)生管理系統(tǒng)的開發(fā)[J].電腦知識與技術(shù)(學(xué)術(shù)交流),2006(14):22.
[3]黃偉.API服務(wù)中間件的設(shè)計與實現(xiàn)[D].成都:電子科技大學(xué),2020.
(編輯 何 琳)