工具
馁启。IDE為idea16
。JDK環(huán)境為1.8
秋度。gradle構(gòu)建炸庞,版本:2.14.1
。Mysql版本為5.5.27
荚斯。Tomcat版本為7.0.52
埠居。流程圖繪制(xmind)
。建模分析軟件PowerDesigner16.5
事期。數(shù)據(jù)庫工具M(jìn)ySQLWorkBench滥壕,版本:6.3.7build
本期目標(biāo)
1.mybatis一些簡(jiǎn)單的進(jìn)階使用
2.日志功能的記錄
3.文章發(fā)布
4.草稿保存
上期我們通過對(duì)數(shù)據(jù)庫的分析,仔仔細(xì)細(xì)的探索了一遍WordPress程序運(yùn)行時(shí)候文章提交和草稿提交的區(qū)別和共同點(diǎn)兽泣,簡(jiǎn)略的概括下如下:
绎橘。文章和草稿區(qū)別是postType不同
。文章和草稿都有日志記錄
唠倦。日志的postStatus都是closed
称鳞。日志的postParent始終是指向其文章的id
···
更為詳細(xì)的文章涮较,建議去我的上一篇文章查看。
既然我們已經(jīng)大概明白了怎么去實(shí)現(xiàn)胡岔,那么現(xiàn)在我們需要的就是進(jìn)行實(shí)驗(yàn)法希。
首先老規(guī)矩,先從我們的dao層實(shí)現(xiàn)開始靶瘸,我們爭(zhēng)取把各個(gè)功能模塊解耦,那么我們就不能過于在dao層限制毛肋,所以我們需要在dao層實(shí)現(xiàn)數(shù)據(jù)(文章怨咪、草稿、歷史記錄)插入润匙。所以我們先生成dao接口如下:
上面的語句中我們可以看到在mapper的insert語句塊中我們插入了selectKey語句塊诗眨,主要是用來返回我們插入的條目的自增id。為什么這里我們非要獲取到插入的id呢孕讳?主要是文章生成后的日志記錄都是需要文章id才能生成對(duì)應(yīng)的日志記錄匠楚。
同時(shí)在inset語句塊中,我們使用了choose+when語句塊生成了動(dòng)態(tài)sql厂财,這樣就能動(dòng)態(tài)的選擇程序執(zhí)行芋簿。
同時(shí)在上面的代碼中我們可以看到上面的when和下面的when語句塊中關(guān)于bean的屬性獲取使用方式不一樣!
重點(diǎn):擴(kuò)展類型璃饱,要使用父類的屬性時(shí)与斤,必須是對(duì)象名.屬性名的形式,對(duì)象名從dao的接口設(shè)置荚恶。(否則直接使用屬性的時(shí)候撩穿,會(huì)異常提示空指針,且提示對(duì)象的屬性中沒有該屬性)
小技巧:
1.在mapper中使用屬性時(shí)谒撼,最好是對(duì)象名.屬性名的方式食寡,同時(shí)在dao層中設(shè)置對(duì)象的名稱(在我們上面dao層的add接口中有說明)
2.mybatis的動(dòng)態(tài)sql可以減少很多額外的方法和mapper中的sql編寫,所以必須掌握動(dòng)態(tài)sql
3.當(dāng)屬性較多的時(shí)候廓潜,我們一定不能忘記單元測(cè)試抵皱,單元測(cè)試可以簡(jiǎn)單直觀的了解到哪里出錯(cuò),減少在后續(xù)開發(fā)中錯(cuò)誤檢查的時(shí)間茉帅。
上面我們也是提到過單元測(cè)試叨叙,那么我們現(xiàn)在看看這個(gè)dao的單元測(cè)試應(yīng)該如何完成呢?
首先給大家看看我們文章的bean:
說實(shí)話堪澎,一看到這里的時(shí)候擂错,我也很惆悵。靈機(jī)一動(dòng)樱蛤,感覺可以祭出這個(gè)系列教程我們自己手寫的第一個(gè)設(shè)計(jì)模式了钮呀!開啟我們的javaBean的建造者模式剑鞍。
那么我們ben生成好了后,我們就需要開始寫我們的單元測(cè)試爽醋,如下:
大家可以看到上面我們的PostCustom還是從我們自己手動(dòng)封裝的PostInitUtils中獲取的蚁署,同時(shí)我們的PostCustom還是我們的PostBean的子類。所以這里就用到了傳說中的pojo包裝類型相關(guān)的一些知識(shí)(我們這里并沒有包裝蚂四,不過已經(jīng)用到了擴(kuò)展類)光戈,讓我們接著看看PostInitUtils的代碼:
這里我們可以看到我們對(duì)外開放的核心也就文章核心信息相關(guān)的一些東西了,那么這樣我們就能很好的控制數(shù)據(jù)遂赠。
現(xiàn)在我們可以看下數(shù)據(jù)庫久妆,最新多出來的數(shù)據(jù)和文章首頁插入的數(shù)據(jù)如下:
我們今天的主干內(nèi)容到此基本完成,剩下的從dao到前臺(tái)界面適配等等基本上騷年們自己都可以完成至此不在贅述跷睦。