摘要:項目環境用于發送請求測試項目介紹這是一個商城項目,本來想起名叫項目,發現自己并沒有用。也是自己第一篇博客,記錄一下自己的學習過程,希望一方面能多做寫項目鍛煉能力,另一方面也讓自己在做完之后寫寫博客自己總結反思。
1.項目環境
IDEA15 spring4 mybatis3.4 mysql RestLet Client用于發送請求測試
2.項目介紹這是一個商城項目,本來想起名叫SSM項目,發現自己并沒有用springmvc。 前端還在做,使用nodejs。也是自己第一篇博客,記錄一下自己的學習過程,希望一方面能多做寫項目鍛煉能力,另一方面也讓自己在做完之后寫寫博客自己總結反思。3.功能模塊
用戶模塊
管理員模塊(用戶管理和訂單管理)
商品模塊
購物車模塊
訂單管理模塊
4.部分代碼記錄規范化返回值
規范化了Controller的返回值,便于前端的使用,定義了統一的json序列化返回值ServiceResponse類
這樣在controller中的返回值就可以這樣寫
這樣,通過前端后端共同約定好一個json格式,可以大大加快開發的速度。
通用工具類封裝
我們在開發過程中經常會遇到配置問價文件的讀取,時間類型字符和字符串之間的轉換,在商業項目中金額的計算的處理等等。尤其是在計算金額的時候發生精度丟失的問題,例如
public void fun() { System.out.println(0.05+0.01); System.out.println(1.0-0.42); System.out.println(4.012*100); System.out.println(3.3/10.0); }
0.060000000000000005 0.5800000000000001 401.19999999999993 0.32999999999999996
這種問題就會造成用戶下單時的錯誤,這種錯誤在商家一方一定是無法承受的。
所幸java給我們提供了一種解決方案,就是使用String的BigDecimal構造器,一定是使用String類型的,如果使用double類型構造器會造成更大的誤差。BigDecimal在用String做入參的時候,能夠正確地把字符串轉化成真正精確的浮點數,如果入參是其他類型,那么會調用Object.toString方法進行轉化之后進行輸出。而Double.toString會使用一定的精度來四舍五入double,然后再輸出。
public static BigDecimal add(double v1, double v2) { BigDecimal b1 = new BigDecimal(Double.toString(v1)); BigDecimal b2 = new BigDecimal(Double.toString(v2)); return b1.add(b2); }
Po和Vo
Po:Persistent Object 持久化對象,可以理解為與數據庫字段一一對應的對象 Vo:Value Object 值對象,用于在業務之間傳遞的對象,例如在用戶創建訂單的時候,創建一個OrderVo對象,將訂單信息,購物車信息,收貨地址信息,用戶信息封裝在一起會更方便。如果直接使用Order PO, Cart Po,User Po這些持久對象,在封裝json傳遞給前端會造成很多麻煩。
封裝常量
將常量封裝起來使用會使整個項目看起來更整潔,提高復用性
對于普通常量:
public static final String EMAIL = "email";
對于一個對象的多個狀態:
public interface Cart { int CHECKED = 1;//購物車選中 int UNCHECKED = 0;// String LIMIT_NUM_FAIL = "LIMIT NUM FAIL"; String LIMIT_NUM_SUCCESS = "LIMIT NUM SUCCESS"; }
對于一個對象某個狀態需要多個字段:
public enum OrderStatusEnum { CANCELED(0, "取消"), NO_PAY(10, "未支付"), PAID(20, "已付款"), SHIPPED(40, "已發貨"), ORDER_SUCCESS(50, "訂單完成"), ORDER_CLOSE(60, "訂單關閉"); public static OrderStatusEnum codeof(int code) { for (OrderStatusEnum orderStatusEnum : values()) { if (orderStatusEnum.getCode() == code) { return orderStatusEnum; } } throw new RuntimeException("沒有找到對應枚舉"); } OrderStatusEnum(int code, String value) { this.code = code; this.value = value; } private String value; private int code; public String getValue() { return value; } public void setValue(String value) { this.value = value; } public int getCode() { return code; } public void setCode(int code) { this.code = code; } }規劃
最后在規劃一下自己接下來的學習路線吧,還是以java開發為主,并關注一些node的發展狀況。還是要多做幾個SSM、SSH的項目,看看spring的源碼,然后是springboot,就先這樣吧。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/70416.html
摘要:官方資料微信公眾平臺注冊小程序。官網開發文檔社區開發工具部署微信小程序微信小程序本身不需要部署,在微信開發工具中直接上傳代碼就行。 為什么 學習 Java 三年,目前已經工作了2年,因為自學,基礎差,所以打算年末總結一下常見的基礎知識和面試點; 也可以通過獨立做一個項目整合自己工作期間學習的知識,加深印象。 但是想著回家或是平時手機用的多,做一款APP和小程序很方便查看。 項目展示 本...
摘要:是現在廣泛流行的代從開始學習系列之向提交代碼掘金讀完本文大概需要分鐘。為了進行高效的垃圾回收,虛擬機把堆內存劃分成新生代老年代和永久代中無永久代,使用實現三塊區域。 React Native 開源項目 - 仿美團客戶端 (Android、iOS 雙適配) - Android - 掘金推薦 React Native 學習好項目,仿照美團客戶端... 極簡 GitHub 上手教程 - 工具...
摘要:常見的八大排序算法,他們之間關系如下被人忽視的面向對象的六大原則后端掘金前言作為文集的第一篇,我覺得有必要介紹一下大概的寫作規劃。 Java多線程干貨系列—(四)volatile關鍵字| 掘金技術征文 - 掘金原本地址:Java多線程干貨系列—(四)volatile關鍵字博客地址:http://tengj.top/ 前言 今天介紹下volatile關鍵字,volatile這個關鍵字可能...
摘要:常見的八大排序算法,他們之間關系如下被人忽視的面向對象的六大原則后端掘金前言作為文集的第一篇,我覺得有必要介紹一下大概的寫作規劃。 Java多線程干貨系列—(四)volatile關鍵字| 掘金技術征文 - 掘金原本地址:Java多線程干貨系列—(四)volatile關鍵字博客地址:http://tengj.top/ 前言 今天介紹下volatile關鍵字,volatile這個關鍵字可能...
閱讀 2025·2023-04-25 14:50
閱讀 2907·2021-11-17 09:33
閱讀 2611·2019-08-30 13:07
閱讀 2838·2019-08-29 16:57
閱讀 908·2019-08-29 15:26
閱讀 3540·2019-08-29 13:08
閱讀 1990·2019-08-29 12:32
閱讀 3383·2019-08-26 13:57