人事管理系統(tǒng)(學(xué)習(xí)筆記)

該系統(tǒng)使用了MyBatis + Spring + JQuery + JSP技術(shù)。
采用了嚴(yán)格的JAVAEE應(yīng)用結(jié)構(gòu),具有如下分層:

  • 表現(xiàn)層
  • MVC層
  • 業(yè)務(wù)邏輯層
  • DAO層
  • 領(lǐng)域?qū)ο髮?/li>
  • 數(shù)據(jù)庫(kù)服務(wù)層

??按照之前的理解,業(yè)務(wù)邏輯層主要通過(guò)Controller+Dao文件來(lái)實(shí)現(xiàn),但這里不是。這里業(yè)務(wù)邏輯層主要是由Spring IoC容器管理的業(yè)務(wù)邏輯組件組成,簡(jiǎn)而言之就是將DAO組件封裝成業(yè)務(wù)邏輯組件HrmService(本案例),也就是說(shuō)HrmService封裝了UserDaoDeptDao、JobDao、EmployeeDaoNoticeDaoDocumentDao。還是通過(guò)這些Dao組件來(lái)實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)表的各種基本操作。
??這里的Dao文件使用了MyBatis的注解配置方式進(jìn)行實(shí)現(xiàn)。UserDao.java對(duì)應(yīng)的就是UserMapper.java,而UserMapper.java相當(dāng)于不使用注解時(shí)候的UserMapper.xml+UserMapper.java
??Spring提供的Ioc容器是業(yè)務(wù)邏輯組件和DAO組件的工廠,負(fù)責(zé)生成并管理這些實(shí)例。在《精通Spring 4.x企業(yè)應(yīng)用開(kāi)發(fā)實(shí)戰(zhàn)一書(shū)》中介紹到,IoC可以將類(lèi)與類(lèi)之間的依賴從代碼中脫離出來(lái),用配置的方式進(jìn)行依賴關(guān)系描述。
??IoC= Inverse of Control,控制反轉(zhuǎn)

Spring框架結(jié)構(gòu)

數(shù)據(jù)表與持久化類(lèi)

??這里的重點(diǎn)在于體會(huì)需要根據(jù)功能設(shè)計(jì)出哪些持久化類(lèi)。
??系統(tǒng)可以分為6個(gè)模塊:用戶管理、部門(mén)管理、職位管理、員工管理、公告管理和文件下載。
??人事管理系統(tǒng),無(wú)非就是要知道公司里面有哪些員工、這些員工屬于哪個(gè)部門(mén)、具體什么職位。本來(lái),員工數(shù)據(jù)表應(yīng)該具有部門(mén)和職位這兩個(gè)欄目,但是部門(mén)和職位又有很多的信息,所以把部門(mén)和職位都單獨(dú)抽離出來(lái)成為一張表。然后通過(guò)外鍵的方式進(jìn)行關(guān)聯(lián)。

??本系統(tǒng)設(shè)計(jì)了六個(gè)持久化類(lèi)。分別為:
User(用戶) 、Dept(部門(mén))、Job(職位)、Employee(員工)、Notice(公告)、Document(文件)。
??User則是需要使用該系統(tǒng)的人。User實(shí)現(xiàn)系統(tǒng)的登錄以后,可以對(duì)互有關(guān)聯(lián)的Employee、Dept、Job類(lèi)進(jìn)行增刪改查,并且還能對(duì)NoticeDocument進(jìn)行增刪改查、上傳和下載操作”。

實(shí)現(xiàn)DAO持久層

??DAO中比較生疏的是動(dòng)態(tài)SQL語(yǔ)句,要分析引入SQL語(yǔ)句的原因。注解@SelectProvider。按照目前的理解,動(dòng)態(tài)查詢就是利用一些諸如條件判斷的語(yǔ)句來(lái)根據(jù)不同條件生成不同的SQL語(yǔ)句。
??了解分頁(yè)動(dòng)態(tài)查詢、動(dòng)態(tài)查詢總數(shù)量、動(dòng)態(tài)插入、動(dòng)態(tài)更新這幾個(gè)功能有什么實(shí)際意義。如果不使用動(dòng)態(tài)SQL,就使用傳統(tǒng)的不行嗎。是會(huì)造成效率的下降還是什么情況。

實(shí)現(xiàn)Service持久層

??本系統(tǒng)只使用了一個(gè)業(yè)務(wù)邏輯組件:HrmService。
??HrmService接口中定義了大量的業(yè)務(wù)方法。方法的實(shí)現(xiàn)依賴Dao組件。業(yè)務(wù)邏輯方法的訪問(wèn)涉及多個(gè)DAO操作。而持久層上的變化交給DAO層負(fù)責(zé),業(yè)務(wù)邏輯組件只負(fù)責(zé)業(yè)務(wù)邏輯上的變化
??主要是創(chuàng)建了HrmService接口。當(dāng)然這些查詢的結(jié)果需要利用到下面的分頁(yè)功能。HrmService實(shí)現(xiàn)了很多方法(具體接口實(shí)現(xiàn)時(shí)分用戶服務(wù)接口、部門(mén)服務(wù)接口、員工服務(wù)接口等等)。
??這里實(shí)現(xiàn)了一個(gè)分頁(yè)的JSP標(biāo)簽,這個(gè)功能有一點(diǎn)陌生。這三個(gè)功能PageModel +PagerTag + page.tld需要好好鞏固下。

實(shí)現(xiàn)Web層

??在springmvc-config.xml中配置了一個(gè)攔截器AuthorizedInterceptor。接下來(lái)就是具體實(shí)現(xiàn)用戶管理部門(mén)管理、職位管理、員工管理、公告管理、下載中心這幾個(gè)功能。
??這里就會(huì)利用到HrmService接口和該接口中提供的具體的方法。
@Autowired標(biāo)簽是什么意思。
這個(gè)標(biāo)簽是Spring中的IoC容器的知識(shí)。但是具體有什么用處還需要進(jìn)一步了解。通過(guò)@Autowired和@Qualifier就可以自動(dòng)注入U(xiǎn)serService。背后的功能又是如何實(shí)現(xiàn)的,需要進(jìn)行了解。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 本文是我自己在秋招復(fù)習(xí)時(shí)的讀書(shū)筆記,整理的知識(shí)點(diǎn),也是為了防止忘記,尊重勞動(dòng)成果,轉(zhuǎn)載注明出處哦!如果你也喜歡,那...
    波波波先森閱讀 12,444評(píng)論 6 86
  • 今天是6月25日,好久沒(méi)有寫(xiě)簡(jiǎn)書(shū)了,臨近考試了,每天都在刷題,做卷子,讀書(shū)包本,一開(kāi)始覺(jué)得作業(yè)留的真的太多了,每天...
    沐浴陽(yáng)光_ee71閱讀 210評(píng)論 0 3
  • 閑來(lái)無(wú)事,擠一擠鼻子上的“小白點(diǎn)”,“噗嗤”一下,擠出一個(gè)白色的長(zhǎng)條,感覺(jué)棒極了!不過(guò),這到底是個(gè)啥? ...
    竹林霜雪閱讀 7,243評(píng)論 1 0
  • 兒子昨天下午開(kāi)始情緒好像好起來(lái)了,跟我說(shuō)讓我開(kāi)始好給他找學(xué)校去了,我說(shuō)好的,但是明天是端午節(jié)學(xué)校放假,放完假我去找...
    徐亞娟閱讀 248評(píng)論 0 4
  • 【這是“心靈·對(duì)話”寫(xiě)作小組第7篇文章】 今天中午辣媽聚會(huì)~ 因?yàn)槊刻煳潭雒娴睦眿寕兣龅揭黄穑_(kāi)始聊起了生孩子...
    富足Linda閱讀 191評(píng)論 0 0

友情鏈接更多精彩內(nèi)容