後端開發最基礎的工做就是CRUD前端
表設計常見疑惑點:java
1、表字段類型和實體類型的對應關係sql
數據庫經常使用字段類型爲int、bigint、varchar、datetime;數據庫
實體最好以integer、String、Date接受。json
先後端交互一路都是date類型,輸入:前端傳date類型,後端接受date類型,存到數據庫爲datetime類型;輸出:後端查到date類型,以某個日期格式(yyyy-MM-dd hh:mm:ss)傳給前端。後端
問題1:須要注意,若是參數中有日期格式,以@requestbody接收時,會發生類型轉換錯誤,由於json化以後,時間就是字符串,字符串解析成日期時會出錯。編輯器
解決方式1:以@ModalAttribute接受。函數
解決方式2:定義屬性編輯器spa
@InitBinder protected void initBinder(WebDataBinder binder) { SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); binder.registerCustomEditor(Date.class, new CustomDateEditor(dateFormat, true));
解決方式3:使用兩個註解解決 參考博客https://blog.csdn.net/zhou520yue520/article/details/81348926.net
@DateTimeFormat決定入參的格式,將字符串參數轉爲日期;@JsonFormat決定出參的格式,將日期轉爲須要的格式
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")private Date expectationResolveTime;
前端傳時間戳,實體以long類型接受,存庫的時候經過日期函數轉爲datetime類型;查詢語句使用日期函數再將日期轉爲時間戳。
-------這樣存在的問題是,dataJPA默認的sql是不會作這樣的轉換的,所以若是使用SpringdataJPA,entity的日期類型必定要設計未和數據庫一致,不須要轉換。
2、表的設計
1.主鍵的設置
主鍵設置常見的就是自增和UUID兩種,能夠在主鍵策略中設置執行那種策略。
2.日期的設置
日期能夠存varchar類型、bigInt類型、datetime。強烈建議設置類型爲datatime,很直觀。。。
一般存datetime類型,這樣數據表直觀,對應entity的date類型
3.枚舉值得設置