SpringBoot知識(shí)體系實(shí)戰(zhàn)-定時(shí)器篇-創(chuàng)新互聯(lián)

實(shí)戰(zhàn)前言:定時(shí)任務(wù)我想諸位童鞋都不陌生,簡(jiǎn)而言之名為“設(shè)定定時(shí)鬧鐘做某件事情”,在這里我將以訂單模塊作為實(shí)戰(zhàn)為例!

成都創(chuàng)新互聯(lián)公司2013年開創(chuàng)至今,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項(xiàng)目成都網(wǎng)站設(shè)計(jì)、成都做網(wǎng)站網(wǎng)站策劃,項(xiàng)目實(shí)施與項(xiàng)目整合能力。我們以讓每一個(gè)夢(mèng)想脫穎而出為使命,1280元花垣做網(wǎng)站,已為上家服務(wù),為花垣各地企業(yè)和個(gè)人服務(wù),聯(lián)系電話:18982081108

需求分析:在企業(yè)級(jí)應(yīng)用中,經(jīng)常打交道的業(yè)務(wù)應(yīng)當(dāng)屬于訂單模塊了,下面將基于這樣的場(chǎng)景實(shí)戰(zhàn)定時(shí)器:將業(yè)務(wù)級(jí)別的訂單表A中發(fā)生更新的數(shù)據(jù) 每天定時(shí) 同步到報(bào)表級(jí)別的訂單表B中(為了給數(shù)據(jù)分析部門做報(bào)表)!其定時(shí)執(zhí)行的業(yè)務(wù)流程如下圖所示:
SpringBoot知識(shí)體系實(shí)戰(zhàn)-定時(shí)器篇

實(shí)現(xiàn)思路:
①、核心邏輯其實(shí)你會(huì)發(fā)現(xiàn)在于“拉取A表的數(shù)據(jù)以及更新到報(bào)表級(jí)別的訂單表B中”;
②、實(shí)現(xiàn)①流程之后,接下來其實(shí)是定時(shí)器的責(zé)任了。在這里我采用的是Spring提供的Scheduler模塊來實(shí)現(xiàn)!
③、在這里需要解釋“發(fā)生更新”的概念,假設(shè)每天拉取數(shù)據(jù)的日期定義為reportDate,那么更新的數(shù)據(jù)應(yīng)當(dāng)包括:“create_time=reportDate的數(shù)據(jù)列表”以及“update_time=reportDate的數(shù)據(jù)列表”,即“當(dāng)天新產(chǎn)生的數(shù)據(jù)以及當(dāng)天發(fā)生更新的數(shù)據(jù)”統(tǒng)稱為“發(fā)生更新的數(shù)據(jù)”,即增量拉取;
在實(shí)戰(zhàn)過程中,我也實(shí)現(xiàn)了全量拉取的業(yè)務(wù)邏輯。而對(duì)于報(bào)表級(jí)別的訂單表B,則是通過order_no,即訂單編號(hào)來判斷記錄是否唯一從而決定觸發(fā)B表的數(shù)據(jù)記錄是需要修改還是新增

正文:當(dāng)?shù)玫缴厦娴膶?shí)現(xiàn)思路時(shí),其實(shí)已經(jīng)幾乎實(shí)現(xiàn)了一大半,接下來就是代碼實(shí)現(xiàn)了
①、首先創(chuàng)建數(shù)據(jù)庫(kù)db_springboot,創(chuàng)建兩張數(shù)據(jù)字段一樣的表,分別為業(yè)務(wù)級(jí)別的數(shù)據(jù)表A:order_record,報(bào)表級(jí)別的數(shù)據(jù)表B:order_report。并用mybatis逆向工程生成entity,mapper,mapper.xml文件(在這里就不貼出來了?。旅尜N出A,B表的創(chuàng)建語(yǔ)句:
SpringBoot知識(shí)體系實(shí)戰(zhàn)-定時(shí)器篇

SpringBoot知識(shí)體系實(shí)戰(zhàn)-定時(shí)器篇

②、然后在業(yè)務(wù)級(jí)別的訂單模塊OrderRecordMapper中定義全量/增量拉取的sql邏輯:

SpringBoot知識(shí)體系實(shí)戰(zhàn)-定時(shí)器篇

SpringBoot知識(shí)體系實(shí)戰(zhàn)-定時(shí)器篇

③、在報(bào)表級(jí)別的訂單模塊OrderReportMapper中定義新增或者修改的sql邏輯,即通過訂單編號(hào)查詢的sql邏輯

SpringBoot知識(shí)體系實(shí)戰(zhàn)-定時(shí)器篇

SpringBoot知識(shí)體系實(shí)戰(zhàn)-定時(shí)器篇

④、采用Spring的Scheduler組件模塊實(shí)現(xiàn)定時(shí)邏輯,在使用之前,需要在SpringBoot啟動(dòng)類開啟Scheduler,如下所示:
SpringBoot知識(shí)體系實(shí)戰(zhàn)-定時(shí)器篇

⑤、而真正的定時(shí)代碼邏輯如下:

SpringBoot知識(shí)體系實(shí)戰(zhàn)-定時(shí)器篇

SpringBoot知識(shí)體系實(shí)戰(zhàn)-定時(shí)器篇

效果:在這里,@Scheduled是核心重點(diǎn),而其中的cron參數(shù)其實(shí)就是:“秒 分 時(shí) 日 月 年”的設(shè)置,在這里我是動(dòng)態(tài)配置配置文件中,配置如下圖所示:
SpringBoot知識(shí)體系實(shí)戰(zhàn)-定時(shí)器篇

系統(tǒng)一啟動(dòng),將會(huì)在定時(shí)設(shè)置的cron的那個(gè)點(diǎn)開始觸發(fā),首先是源數(shù)據(jù)表,接著是從源數(shù)據(jù)表中“拉取今天新增的以及新增更新的數(shù)據(jù)列表” 并新增或者更新到 目標(biāo)報(bào)表表B中,數(shù)據(jù)表中的數(shù)據(jù)以及觸發(fā)的效果如下圖所示:
SpringBoot知識(shí)體系實(shí)戰(zhàn)-定時(shí)器篇

SpringBoot知識(shí)體系實(shí)戰(zhàn)-定時(shí)器篇

SpringBoot知識(shí)體系實(shí)戰(zhàn)-定時(shí)器篇

結(jié)語(yǔ):以上涉及到的源碼以及數(shù)據(jù)庫(kù)下載地址:http://down.51cto.com/data/2449867 實(shí)戰(zhàn)過程如有相關(guān)問題,請(qǐng)多多指教!若文章能幫助到你,請(qǐng)點(diǎn)贊轉(zhuǎn)發(fā)分享唄,順便關(guān)注關(guān)注我的微信公眾號(hào)或者加我個(gè)人qq:1974544863 或者 qq群:583522159(java開源技術(shù)交流)進(jìn)行技術(shù)交流
SpringBoot知識(shí)體系實(shí)戰(zhàn)-定時(shí)器篇

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。

當(dāng)前名稱:SpringBoot知識(shí)體系實(shí)戰(zhàn)-定時(shí)器篇-創(chuàng)新互聯(lián)
當(dāng)前鏈接:http://bm7419.com/article0/hcjoo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站導(dǎo)航、網(wǎng)站設(shè)計(jì)公司、全網(wǎng)營(yíng)銷推廣、企業(yè)建站網(wǎng)站建設(shè)、外貿(mào)建站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)站建設(shè)公司