搭建新项目注意事项
作為項目負責人,一開始要做很多事情,總會忽略很多比較關鍵的地方。以下是關于之前項目的一些總結,以后再遇到新項目時,一定要先仔細閱讀此總結再開始新項目的搭建。
一、數據庫相關
1.設計數據庫時盡量確認好每個字段的長度、類型
在類型方面,特別需要注意的是:數字類型要明確是否有小數,時間的存儲類型確認 好是string、datetime還是date。
2.保證數據庫字段名字符合實際指代的意思和規(guī)范
3.主鍵不要直接定義成【id】,而要加上前綴,定義成【表名id】或者【表名_id】
4.每張表一定要有creator、create_time,modifier、modify_time、del_flag,時間類型為datetime,創(chuàng)建人和修改人的ID類型為long或int,刪除標記類型可以為tinyInt
5.相關業(yè)務的數據庫表的表名可以使用統(tǒng)一前綴,如o_order、o_mail
6.如果項目中會有很多關聯(lián)查詢,為了減少關聯(lián)查詢,那么表中外鍵所在表的相關外鍵也可以作為此表的一個字段。例如,商品表中有賣家ID(seller_id),賣家表中有所在企業(yè)ID(enterprise_id),如果我們想查詢一個企業(yè)有哪些商品,為了避免關聯(lián)查詢,我們就可以將enterprise_id也可存在商品表中。
這樣做可能會帶來數據冗余的問題,這就需要在查詢效率和冗余問題之間進行權衡了。一般像外鍵造成的冗余是被允許的。
7.數據庫最選要寫設計文檔規(guī)范
所有數據庫設計要寫成文檔,文檔以模塊化形式表達.大致格式如下:
‘——————————————-
’ 表 名: web_user
’ 作 者: Peter
’ 日 期: 2017-10-10
’ 版 本: 1.0
’ 描 述: 保存用戶資料
‘——————————————-
’ 字段名 類型 長度 備注
’ userID int, 10 主鍵
’ userName vachar 10 用戶名
’ ……
‘——————————————–
8.保證開發(fā)、測試、正式數據庫結構同步
每次對測試數據庫的更改,如修改字段的名字、長度,類型等等時,我們應當使用sql語句,如ALTER TABLE person ADD COLUMN birthday; ,然后將該sql語句備份在項目中。經過漫長的測試后,在正式環(huán)境需要發(fā)一版時,我們只需要將該sql在正式數據庫中執(zhí)行一次即可,執(zhí)行完后對備份的sql進行標記說明已經在正式環(huán)境中執(zhí)行。
為了以防萬一,我們還需要用mysqlDiff工具將兩個庫的數據表結構進行比較。
9.設計數據庫字段時,如果該字段有唯一性要求,則必須對該字段設置唯一索引(unique)
10. 數據庫的字符類型必須選擇utf8mb4。mysql的utf8編碼只能存三個字節(jié),所以也就不是真正的UTF8編碼,所以不能存表情;真正的utf8編碼的長度是1~4之間變化的。
| 二、代碼相關 |
二、代碼相關
組織項目的分層結構。個人偏向于同一業(yè)務相關的vo、po、controller、service、dao、xml等這些包都放在同一功能包目錄下。
異常處理公共類,主要是指Controller層的,這可以避免每個接口方法都要寫try catch
定義好異常返回規(guī)則并實現,需將規(guī)則告知前端開發(fā)人員。
針對不同模塊或大的業(yè)務功能,編寫不同的常量類。可以避魔法值。
定義分頁相關字段的公共類,在接口中要接收分頁查詢的參數時,可通過繼承或實現分頁公共類的對象接收。
Controller層只能是對參數校驗和寫不重復的簡單邏輯,主要業(yè)務邏輯必須寫在service層
如果用的框架不是特別好,可以對簡單的增刪改查自定義一個service層的公共接口和一個dao層的公共接口。MybatisPlus就不需要自定義。
接口規(guī)范最好遵循restful,即資源狀態(tài)改變。如user/{id}/addition【接口中不能有動詞】
VO對象最好繼承PO對象,這樣可以少寫很多字段
項目的多數情況都是一個數據庫表里存了另外一個表的主鍵,而在前端展示的時候卻需要另外一個表里的另一個字段,例如,購買的商品表里會存用戶的ID,而前端需要展示用戶的姓名,此時就需要創(chuàng)建一個商品VO,里面添加一個“用戶名”字段。
總結
- 上一篇: Java消息中间件(activeMQ)
- 下一篇: 一些常见的Find 命令