一坷檩、Controller層
? ? 注意url命名規(guī)范,以及post改抡、put矢炼、get和delete四類(lèi)請(qǐng)求的區(qū)別。
二阿纤、Domain實(shí)體類(lèi)層
? ??@JsonIdentityReference(alwaysAsId =true)根據(jù)Id序列化屬性句灌,用于多對(duì)一,構(gòu)造函數(shù)需要@JsonProperty注解一個(gè)根據(jù)id解析對(duì)象的構(gòu)造方法。
????@Transient注解用于創(chuàng)建一個(gè)臨時(shí)的屬性列胰锌,非持久化骗绕,不保存在數(shù)據(jù)庫(kù)。
三资昧、Server服務(wù)層
????@EnableScheduling注明這是一個(gè)定時(shí)類(lèi)酬土,@Scheduled()注明定時(shí)方法,()里可以設(shè)定定時(shí)規(guī)則格带。
四诺凡、Dao層
? ??@Query()編寫(xiě)查詢(xún)語(yǔ)句時(shí)可以查詢(xún)后new一個(gè)需要的對(duì)象。
五践惑、Service層
? ? 編寫(xiě)具體業(yè)務(wù)邏輯,注意算法優(yōu)化嘶卧,最少數(shù)據(jù)庫(kù)訪問(wèn)次數(shù)尔觉,最少循環(huán)次數(shù),什么時(shí)候可以空間換取時(shí)間芥吟,充分利用HashMap處理數(shù)據(jù)侦铜。
? ??Specification動(dòng)態(tài)查詢(xún),其中關(guān)聯(lián)表查詢(xún)方式钟鸵,如:
? ??jdbc.batchUpdate()實(shí)現(xiàn)批量操作钉稍。
六、遇到的問(wèn)題
? ? 1棺耍、在多對(duì)一屬性里贡未,需要@JsonProperty來(lái)注解一個(gè)構(gòu)造函數(shù),否則后臺(tái)無(wú)法根據(jù)前臺(tái)傳遞的ID來(lái)解析對(duì)應(yīng)的對(duì)象蒙袍。
? ? 2俊卤、必要時(shí)利用@Transient簡(jiǎn)化業(yè)務(wù)邏輯。
? ? 3害幅、dao層查詢(xún)數(shù)據(jù)時(shí)參數(shù)盡量不為null消恍。
? ? 4、利用數(shù)據(jù)結(jié)構(gòu)減少for循環(huán)和if判斷以现,增加代碼可讀性及減少潛在的bug狠怨。
? ? 5、HTTP請(qǐng)求:①邑遏、POST /url 創(chuàng)建? ②佣赖、DELETE /url/xxx 刪除 ③、PUT /url/xxx 更新④记盒、GET /url/xxx 查看