秦溧 艾青



摘要:隨著時(shí)代的發(fā)展,為了滿足大學(xué)生對(duì)生活上的需求,以及整合周邊商家所提供的服務(wù),經(jīng)研究,在基于Spring,SpringMVC和Mybatis框架技術(shù)的基礎(chǔ)上,設(shè)計(jì)并實(shí)現(xiàn)了學(xué)生生活服務(wù)平臺(tái),在該平臺(tái)上,用戶可獲取自己想了解的信息,商家可對(duì)店鋪進(jìn)行宣傳。該平臺(tái)界面友好,易于操作,給用戶帶來(lái)出色的使用體驗(yàn),不僅可以提高大學(xué)生的生活效率,而且還可以增加商家的收益。
關(guān)鍵詞:Spring;SpringMVC;MyBatis
中圖分類號(hào):TP311.5? ? ? 文獻(xiàn)標(biāo)識(shí)碼:A
文章編號(hào):1009-3044(2021)13-0080-03
1 背景
經(jīng)調(diào)查,當(dāng)代許多大學(xué)生想取快遞時(shí),往往都會(huì)遇到?jīng)]有時(shí)間,要排很長(zhǎng)的隊(duì)的小問(wèn)題;想要勤工儉學(xué)也沒(méi)有一個(gè)好的渠道;想快速獲取到周邊商鋪也需要自己花費(fèi)大量的時(shí)間去探索;對(duì)于商家來(lái)說(shuō),想有效地對(duì)自己的店鋪進(jìn)行宣傳,卻還停留在采用發(fā)傳單的形式,往往事倍功半。這給大學(xué)生的生活以及商家的收益造成了極大的影響。綜合以上問(wèn)題分析,學(xué)生生活信息化的研究已成為當(dāng)代不可避免的重要課題。
在該平臺(tái)上實(shí)現(xiàn)的功能有,商家的入駐與審核,商家對(duì)店鋪和商品的管理,對(duì)最近一周消費(fèi)記錄的分析,以及查看在該店鋪消費(fèi)的用戶的積分。對(duì)于用戶,可以進(jìn)行對(duì)店鋪和商品的瀏覽,如果已在該平臺(tái)注冊(cè)則可以擁有積分功能和獎(jiǎng)品兌換的功能,即消費(fèi)對(duì)應(yīng)的獎(jiǎng)品和服務(wù)可以獲得相應(yīng)的積分,利用該積分可以在該店鋪兌換心儀的獎(jiǎng)品。用戶可在該平臺(tái)上獲得良好的使用體驗(yàn)。
在傳統(tǒng)的J2EE的開(kāi)發(fā)過(guò)程中存在著許多問(wèn)題。由于采用傳統(tǒng)的SSH框架進(jìn)行開(kāi)發(fā)時(shí),用Hibernate框架的對(duì)數(shù)據(jù)庫(kù)進(jìn)行操作時(shí),往往會(huì)出現(xiàn)難以拼接Sql語(yǔ)句等問(wèn)題,使得系統(tǒng)的開(kāi)發(fā)和部署非常復(fù)雜,運(yùn)行效率也低。本文采用SSM框架(Spring,SpringMVC,MyBatis)來(lái)開(kāi)發(fā)學(xué)生生活服務(wù)平臺(tái),這不僅簡(jiǎn)化了編程,還提高了系統(tǒng)性能,增強(qiáng)了系統(tǒng)的可擴(kuò)展性。
2 SSM框架概述
Spring 是一個(gè)輕量級(jí)的 Java 框架, 它是整合SSM的核心。Spring由Core(核心)、 Context(上下文)、 AOP(面向切面)、DAO(控制反轉(zhuǎn))、ORM、Web以及MVC組成,它在視圖層、數(shù)據(jù)持久層及業(yè)務(wù)邏輯層都有這廣泛的應(yīng)用,在這幾個(gè)層次里,程序員可以使用它的任何功能,系統(tǒng)框架的穩(wěn)定性不會(huì)受到任何影響。Spring主要是以IOC控制反轉(zhuǎn)和AOP面向切面編程為主的一款輕量級(jí)框架,在真正意義上實(shí)現(xiàn)了“一次寫(xiě)入,多處運(yùn)行”,改善了J2EE的開(kāi)發(fā)效率以及技術(shù)標(biāo)準(zhǔn)的不統(tǒng)一,是J2EE應(yīng)用的各層的最優(yōu)解決方案,能夠與其他框架整合實(shí)現(xiàn)無(wú)縫連接[1]。
SpringMVC是輕量級(jí)web框架陣營(yíng)中的主要成員之一,MVC設(shè)計(jì)思想是它的主要特色,這種設(shè)計(jì)方法可以用來(lái)對(duì)WEB層實(shí)現(xiàn)解耦,從而使得開(kāi)發(fā)變得更加清晰和容易,同時(shí)能無(wú)縫銜接Spring技術(shù),并且數(shù)據(jù)驗(yàn)證更加靈活[4]。在開(kāi)始使用Java 2E技術(shù)進(jìn)行開(kāi)發(fā)時(shí)并沒(méi)有想到使用框架來(lái)簡(jiǎn)化開(kāi)發(fā)的這種概念,因此大部分的開(kāi)發(fā)都是采用Jsp(編寫(xiě)前端代碼)、Servlet(編寫(xiě)請(qǐng)求跳轉(zhuǎn)和控制文件)和JavaBean來(lái)進(jìn)行系統(tǒng)的開(kāi)發(fā)。在開(kāi)發(fā)中,JSP接收用戶的Request及同時(shí)將系統(tǒng)處理所得到的Result返回到服務(wù)器中并在視圖層呈現(xiàn)給用戶;JavaBean 用來(lái)建立和維護(hù)系統(tǒng)和數(shù)據(jù)庫(kù)之間連接的關(guān)系, Servlet 就作為Controller用于接收請(qǐng)求并返回相應(yīng)的響應(yīng)結(jié)果。采用這種開(kāi)發(fā)模式會(huì)存在一個(gè)問(wèn)題,那就是傳統(tǒng)方法中,每創(chuàng)建一個(gè)請(qǐng)求的路徑都會(huì)對(duì)應(yīng)的在系統(tǒng)中創(chuàng)建一個(gè)Servlet。這樣會(huì)導(dǎo)致系統(tǒng)中存在大量的Servlet文件,這種開(kāi)發(fā)模式不僅會(huì)使系統(tǒng)源碼占用的空間過(guò)多,同時(shí)還會(huì)給開(kāi)發(fā)人員在后期系統(tǒng)的調(diào)試和維護(hù)中造成極大的不便。此外,在處理請(qǐng)求時(shí)仍有許多不方便的操作。但是,SpringMVC解決了V-C之 間的交互問(wèn)題,也就是視圖和控制器之間的交互問(wèn)題[2]。
MyBatis 是一個(gè)輕量級(jí)Java持久層框架,它可以支持自定義 SQL、存儲(chǔ)數(shù)據(jù)的過(guò)程以及高級(jí)的Mapper映射。MyBatis 可以支持和MySql數(shù)據(jù)庫(kù)的聯(lián)合使用。MySQL 作為對(duì)數(shù)據(jù)庫(kù)進(jìn)行操作的核心應(yīng)用組件,它封裝了對(duì)數(shù)據(jù)庫(kù)可以進(jìn)行增刪改查的所有操作,并且可以只需要通過(guò)對(duì)xml 配置進(jìn)行簡(jiǎn)單的配置和注解就可以快速生成一些主要的代碼,提高開(kāi)發(fā)者的生產(chǎn)力[3]。MySQL 的框架設(shè)計(jì)采用分層的思想[4-5],從邏輯業(yè)務(wù)上可以分為3 層:
1)API 接口層,在這一層Mybatis提供了大量可直接調(diào)用的API接口,這些接口的功能全面且強(qiáng)大,只要開(kāi)發(fā)者在開(kāi)發(fā)過(guò)程中加入了相關(guān)JAR包依賴就可以直接使用,這些 API接口會(huì)省去許多開(kāi)發(fā)過(guò)程中煩瑣的步驟從而使開(kāi)發(fā)變得相當(dāng)簡(jiǎn)單。
2)數(shù)據(jù)處理層,這一層主要是對(duì)JavaBean對(duì)象實(shí)現(xiàn)數(shù)據(jù)的剖析和分解的操作,從而達(dá)到數(shù)據(jù)庫(kù)表和實(shí)體類建立起映射的效果,完成對(duì)數(shù)據(jù)庫(kù)的CRUD 操作[6]。
3)基礎(chǔ)配置層,這一層負(fù)責(zé)數(shù)據(jù)庫(kù)連接和管理以及數(shù)據(jù)的基本配置和加載,其中事務(wù)管理的底層驅(qū)動(dòng)是Mybatis。 Mybatis 主要通過(guò)編寫(xiě)xml文件讓其作為連接數(shù)據(jù)庫(kù)和系統(tǒng)的配置文件,此外,通過(guò)在xml文件中編寫(xiě)Sql語(yǔ)句的方式可以實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)的操作,也可以通過(guò)注解的方式實(shí)現(xiàn)。Mybatis可以提高系統(tǒng)的靈活性和可維護(hù)性主要是因?yàn)樗姆謱铀枷耄硗?Mybatis的結(jié)構(gòu)框架類似 MVC ,它也將系統(tǒng)分為了 DAO 接口層[7]、service 服務(wù)層、view視圖層。但對(duì)數(shù)據(jù)庫(kù)進(jìn)行操作時(shí),都需要在實(shí)體類中去定制數(shù)據(jù)庫(kù)表所對(duì)應(yīng)的主鍵以及其他字段屬性,然而在一些大型系統(tǒng)的數(shù)據(jù)庫(kù)中會(huì)有很多的數(shù)據(jù)庫(kù)表,而這會(huì)導(dǎo)致對(duì)主鍵的指定變得相當(dāng)麻煩。由于mybatis 的數(shù)據(jù)庫(kù)連接,是基于簡(jiǎn)單JDBC(Java Databases Connection)的,因此建立Mybatis和數(shù)據(jù)庫(kù)的連接操作以及釋放鏈接的操作都會(huì)占用系統(tǒng)大量資源[8]。
SSM一個(gè)是典型的單體式輕量級(jí)框架,從職責(zé)上可以給系統(tǒng)分為四層:表示層,業(yè)務(wù)層,持久層和視圖層,可以幫助開(kāi)發(fā)者在較短的時(shí)間內(nèi)搭建出復(fù)用性強(qiáng)、方便維護(hù)的程序。
3 平臺(tái)部分?jǐn)?shù)據(jù)庫(kù)表以及業(yè)務(wù)流程圖設(shè)計(jì)
3.1 系統(tǒng)流圖
商家入駐流程圖,該圖用于展示商家在入駐本平臺(tái)時(shí)需要走的流程,如圖1所示:
商家審核流程圖,該圖用于展示管理員在審核入駐商家店鋪信息的詳細(xì)流程,如圖2所示:
3.2 系統(tǒng)功能圖
學(xué)生生活服務(wù)平臺(tái)(學(xué)生幫)系統(tǒng)功能圖,該圖用于展示,用戶、商家、管理員在該平臺(tái)上所能擁有的功能,如圖3所示:
3.3 部分關(guān)鍵數(shù)據(jù)庫(kù)設(shè)計(jì)
區(qū)域表tb_area:該表用于存儲(chǔ)周邊店鋪信息區(qū)域位置,并由管理員來(lái)進(jìn)行管理,如表1所列:
微信賬號(hào)tb_wechat_auth:用戶可以和自己的微信號(hào)進(jìn)行關(guān)聯(lián),在關(guān)聯(lián)后,將自己的微信賬號(hào)信息存儲(chǔ)到該表中,如表3所列:
本地賬戶表tb_local_auth:用戶在進(jìn)行微信登錄后可以綁定一個(gè)本地賬號(hào),登錄的時(shí)候,除了可以利用自己的微信賬號(hào),也可以用自己的本地賬號(hào)進(jìn)行登錄。在綁定本地賬號(hào)后,將本地賬號(hào)的信息存儲(chǔ)的該表中,如表4所列:
頭條信息表tb_head_line:用于在界面展示商家的宣傳信息,商家在和管理員進(jìn)行協(xié)商后,將自己的店鋪信息在界面的頭條上進(jìn)行宣傳。并將該頭條信息存儲(chǔ)到該表中,如表5所列:
店鋪類別表tb_shop_category:該表用于存儲(chǔ)商店的類別,且店鋪類別的信息由管理員管理,商家在申請(qǐng)店鋪時(shí),需在該表的信息中選取自己需要的店鋪類別,如表6所列:
4 結(jié)束語(yǔ)
本文主要針對(duì)學(xué)生生活服務(wù)平臺(tái)的開(kāi)發(fā)進(jìn)行了技術(shù)的分析、功能的描述、業(yè)務(wù)流程圖和數(shù)據(jù)庫(kù)的設(shè)計(jì)。通過(guò)測(cè)試,該平臺(tái)性能穩(wěn)定、可靠,具有較強(qiáng)的可擴(kuò)展性。
參考文獻(xiàn):
[1] 唐權(quán).SSM框架在JavaEE教學(xué)中的應(yīng)用與實(shí)踐[J].福建電腦,2017,33(12):61,93-94.
[2] 邱丹萍.Web開(kāi)發(fā)中SSM框架的分析[J].電腦知識(shí)與技術(shù),2020,16(17):81-82.
[3] Jeroen O,David J,SaikatT D,et al.RMySQL:database interface and 'MySQL' driver for R[EB/OL].[2020-09-20]. https://cran.r-project.org/web/packages/RMySQL/index.html.
[4] Nash T,Olmsted A.Performance vs.security:Implementing an immutable database in MySQL[C]//2017 12th International Conference for Internet Technology and Secured Transactions (ICITST).Cambridge:IEEE,2017.
[5] Sánchez-de-Madariaga R,Mu?oz A,Castro A L,et al.Executing complexity-increasing queries In relational (MySQL) and NoSQL (MongoDB and EXist) size-growing ISO/EN 13606 standardized EHR databases[J].Journal of Visualized Experiments,2018(133):57439.
[6] 張世雄.PHP操作MySql數(shù)據(jù)庫(kù)的面向?qū)ο竽P皖悓?shí)現(xiàn)[J].清遠(yuǎn)職業(yè)技術(shù)學(xué)院學(xué)報(bào),2018,11(6):45-48.
[7] 陳欣.基于java三層構(gòu)架的管理信息系統(tǒng)中DAO層的構(gòu)建探索[J].科技資訊,2015,13(11):26-27.
[8] 陳小虎,鄧惠俊.基于mybatis的數(shù)據(jù)持久層研究[J].成都工業(yè)學(xué)院學(xué)報(bào),2020,23(2):29-32.
【通聯(lián)編輯:謝媛媛】