【微服務】143:商品分類業務的實現

今天是劉小愛自學Java的第143天。前端

感謝你的觀看,謝謝你。vue

學習計劃安排以下:web

  • 商品分類業務的初步實現。
  • 數據模型的分析:數據表字段的設計,Java中對應的實體類,前端頁面vue組件。
  • 業務模型的分析:請求路徑是什麼?根據什麼去數據庫查詢?具體實現代碼的編寫。
  • 其中還有一個跨域問題將來得及解決,怎麼感受積累的問題愈來愈多了,這樣下去可不行啊。

1、商品分類業務

咱們的項目是劉小愛商城,其核心天然是商品了,因此就要涉及到一個商品分類業務。數據庫

1需求分析跨域

咱們先看看國內的主流網站上是如何作的?瀏覽器

好比說家用電器,這是一級類目。服務器

它又分爲不少種:好比說電視、空調、洗衣機、冰箱……等,這是二級類目。微信

而且還可以垂直細分,好比說電視又能夠被分爲:超薄電視、全面屏電視……等。app

好,如何用代碼實現這種需求?框架

一個需求拿到手中了,優先創建數據模型

  • 前端頁面中的這些數據如何存放到數據庫中?
  • 數據庫中的表如何設計,有哪些字段?
  • 設計Java實體類和數據表對應?

這些問題解決了,方向也就定了,剩下的就是具體代碼的編寫了。

因此說數據模型是很是重要的,你想呀,方向都弄錯了,寫再多的代碼有什麼用?

2數據庫表關係梳理

商品分類這是一個多級類目的關係。

家用電器是一個父節點,它有多個子節點,子節點往下又有子節點,因此表字段設計:

  • id和name表字段這不用多說。
  • 經過表字段parent_id指定對應父節點的id?
  • 經過表字段is_parent肯定它是不是父節點?
  • 若是是true表示它是父節點,有子節點。
  • 若是是false表示它不是父節點,沒有子節點。

這樣就能把表數據自關聯起來了,不管多少級關係,都能表示清楚了。

值得注意的是

  • 數據表字段單詞之間用下劃線「_」隔開。

  • is_parent是一個布爾值,可是在數據表中用0和1表示,0爲false,1爲true。

3前端vue代碼的編寫

好數據分析完成,先從前端頁面開始編寫,由於請求是從前端頁面發出的。

固然實際開發中應該都是根據開發文檔來各自完成,我這邊的話都得本身來弄。

Category.vue是分類業務對應的具體vue,v-card:卡片,是vuetify框架中提供的組件。

至於具體的前端代碼編寫,咱們不作詳細介紹,可是有一點咱們要搞清楚:

頁面發送的請求路徑是怎樣的?

後臺服務器得根據這個路徑來接受請求。

咱們能夠發現:請求路徑爲baseUrl+url,也就是上述中兩個url相鏈接。

同時再經過瀏覽器F12打開控制檯確認其請求路徑是不是這樣的?

2、後臺代碼編寫

1Java實體類

注意實體類是存放在微服務lxa-item的lxa-item-pojo子工程中:

數據庫中的表tb_category,關於字段和咱們一開始的分析基本一致,多了一個sort屬性。

而Category實體類使用通用mapper將其和表tb_category一一對應起來。

2啓動類及mapper層

該業務邏輯很簡單,只涉及到了單表查詢,因此使用通用mapper便可。

注意具體的業務代碼是存放在微服務lxa-item的lxa-item-service子工程中:

①mapper層代碼編寫

由於是單表查詢,因此直接使用通用mappe便可,繼承通用mapper中的Mapper接口便可,泛型爲對應的實體類Category。

②啓動類編寫

由於使用了通用mapper,因此要經過註解@MapperScan肯定掃描mapper的路徑。

另外兩個註解一個開啓eureka客戶端,一個說明是SpringBoot啓動類,寫過不少遍了。

注意:通用mapper相關的包爲tk開頭,必定要注意導包不要導錯了。

3Controller層和Service層

①Controller層代碼

確認其請求路徑:category/list?pid=0

先不考慮網關,直接把整個業務寫出來。

請求路徑中參數是以問號的形式拼接到路徑中的,因此用註解@RequestParam接受參數。

若是是category/list/1這樣直接出如今請求路徑中,就用註解@Pathvarible接受參數。

②Servic層代碼

由於pid並非tb_category表中的主鍵,因此建立一個對象設定pid再查詢。

注意,作一個提醒

關於通用mapper的使用我專門寫過一篇教程,就不作贅述了。

其中還應該作結果判斷的處理,若是查詢到的數據爲空要報錯,我這邊暫時沒作處理。

3、網關測試

代碼編寫完畢作一個測試:

①直接訪問

直接在瀏覽器上輸入對應的路徑,參數pid設置爲0,能夠從數據庫中查詢到對應數據。

其查詢的數據結果上圖右側有顯示。

②經過網關訪問

回顧:網關的做用至關於加了一層保護,其本質仍是會跳轉直接訪問時的那個路徑。

  • prefix:添加路由前綴,網關訪問時路徑都要加上設置的這個路由前綴。
  • routes:添加路由,item/及其子路徑所有都會跳轉到item-service這個微服務。

再次強調:每新建一個微服務,咱們都要以相同的方式配置其網關路由。

③經過域名訪問

若是經過咱們昨天設定的網關域名訪問,會發現瀏覽器控制檯上報錯了,

具體什麼緣由呢?

涉及到了一個跨域問題,關於該問題,時間受限,咱們明天再作說明。

最後

我是劉小愛,一個白天上班晚上學習的95後滬漂,不爲其它,只爲學會自律作好本身,也願個人每日打卡能給你帶來勇氣,歡迎點贊關注和評論。

本文分享自微信公衆號 - 劉小愛(liuxiaoai946)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。

相關文章
相關標籤/搜索