摘要:項目環(huán)境用于發(fā)送請求測試項目介紹這是一個商城項目,本來想起名叫項目,發(fā)現(xiàn)自己并沒有用。也是自己第一篇博客,記錄一下自己的學(xué)習(xí)過程,希望一方面能多做寫項目鍛煉能力,另一方面也讓自己在做完之后寫寫博客自己總結(jié)反思。
1.項目環(huán)境
IDEA15 spring4 mybatis3.4 mysql RestLet Client用于發(fā)送請求測試
2.項目介紹這是一個商城項目,本來想起名叫SSM項目,發(fā)現(xiàn)自己并沒有用springmvc。 前端還在做,使用nodejs。也是自己第一篇博客,記錄一下自己的學(xué)習(xí)過程,希望一方面能多做寫項目鍛煉能力,另一方面也讓自己在做完之后寫寫博客自己總結(jié)反思。3.功能模塊
用戶模塊
管理員模塊(用戶管理和訂單管理)
商品模塊
購物車模塊
訂單管理模塊
4.部分代碼記錄規(guī)范化返回值
規(guī)范化了Controller的返回值,便于前端的使用,定義了統(tǒng)一的json序列化返回值ServiceResponse類
這樣在controller中的返回值就可以這樣寫
這樣,通過前端后端共同約定好一個json格式,可以大大加快開發(fā)的速度。
通用工具類封裝
我們在開發(fā)過程中經(jīng)常會遇到配置問價文件的讀取,時間類型字符和字符串之間的轉(zhuǎn)換,在商業(yè)項目中金額的計算的處理等等。尤其是在計算金額的時候發(fā)生精度丟失的問題,例如
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構(gòu)造器,一定是使用String類型的,如果使用double類型構(gòu)造器會造成更大的誤差。BigDecimal在用String做入?yún)⒌臅r候,能夠正確地把字符串轉(zhuǎn)化成真正精確的浮點數(shù),如果入?yún)⑹瞧渌愋停敲磿{(diào)用Object.toString方法進行轉(zhuǎn)化之后進行輸出。而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 持久化對象,可以理解為與數(shù)據(jù)庫字段一一對應(yīng)的對象 Vo:Value Object 值對象,用于在業(yè)務(wù)之間傳遞的對象,例如在用戶創(chuàng)建訂單的時候,創(chuàng)建一個OrderVo對象,將訂單信息,購物車信息,收貨地址信息,用戶信息封裝在一起會更方便。如果直接使用Order PO, Cart Po,User Po這些持久對象,在封裝json傳遞給前端會造成很多麻煩。
封裝常量
將常量封裝起來使用會使整個項目看起來更整潔,提高復(fù)用性
對于普通常量:
public static final String EMAIL = "email";
對于一個對象的多個狀態(tài):
public interface Cart { int CHECKED = 1;//購物車選中 int UNCHECKED = 0;// String LIMIT_NUM_FAIL = "LIMIT NUM FAIL"; String LIMIT_NUM_SUCCESS = "LIMIT NUM SUCCESS"; }
對于一個對象某個狀態(tài)需要多個字段:
public enum OrderStatusEnum { CANCELED(0, "取消"), NO_PAY(10, "未支付"), PAID(20, "已付款"), SHIPPED(40, "已發(fā)貨"), ORDER_SUCCESS(50, "訂單完成"), ORDER_CLOSE(60, "訂單關(guān)閉"); public static OrderStatusEnum codeof(int code) { for (OrderStatusEnum orderStatusEnum : values()) { if (orderStatusEnum.getCode() == code) { return orderStatusEnum; } } throw new RuntimeException("沒有找到對應(yīng)枚舉"); } 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; } }規(guī)劃
最后在規(guī)劃一下自己接下來的學(xué)習(xí)路線吧,還是以java開發(fā)為主,并關(guān)注一些node的發(fā)展狀況。還是要多做幾個SSM、SSH的項目,看看spring的源碼,然后是springboot,就先這樣吧。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/70416.html
摘要:官方資料微信公眾平臺注冊小程序。官網(wǎng)開發(fā)文檔社區(qū)開發(fā)工具部署微信小程序微信小程序本身不需要部署,在微信開發(fā)工具中直接上傳代碼就行。 為什么 學(xué)習(xí) Java 三年,目前已經(jīng)工作了2年,因為自學(xué),基礎(chǔ)差,所以打算年末總結(jié)一下常見的基礎(chǔ)知識和面試點; 也可以通過獨立做一個項目整合自己工作期間學(xué)習(xí)的知識,加深印象。 但是想著回家或是平時手機用的多,做一款A(yù)PP和小程序很方便查看。 項目展示 本...
摘要:是現(xiàn)在廣泛流行的代從開始學(xué)習(xí)系列之向提交代碼掘金讀完本文大概需要分鐘。為了進行高效的垃圾回收,虛擬機把堆內(nèi)存劃分成新生代老年代和永久代中無永久代,使用實現(xiàn)三塊區(qū)域。 React Native 開源項目 - 仿美團客戶端 (Android、iOS 雙適配) - Android - 掘金推薦 React Native 學(xué)習(xí)好項目,仿照美團客戶端... 極簡 GitHub 上手教程 - 工具...
摘要:常見的八大排序算法,他們之間關(guān)系如下被人忽視的面向?qū)ο蟮牧笤瓌t后端掘金前言作為文集的第一篇,我覺得有必要介紹一下大概的寫作規(guī)劃。 Java多線程干貨系列—(四)volatile關(guān)鍵字| 掘金技術(shù)征文 - 掘金原本地址:Java多線程干貨系列—(四)volatile關(guān)鍵字博客地址:http://tengj.top/ 前言 今天介紹下volatile關(guān)鍵字,volatile這個關(guān)鍵字可能...
摘要:常見的八大排序算法,他們之間關(guān)系如下被人忽視的面向?qū)ο蟮牧笤瓌t后端掘金前言作為文集的第一篇,我覺得有必要介紹一下大概的寫作規(guī)劃。 Java多線程干貨系列—(四)volatile關(guān)鍵字| 掘金技術(shù)征文 - 掘金原本地址:Java多線程干貨系列—(四)volatile關(guān)鍵字博客地址:http://tengj.top/ 前言 今天介紹下volatile關(guān)鍵字,volatile這個關(guān)鍵字可能...
閱讀 2035·2023-04-25 14:50
閱讀 2914·2021-11-17 09:33
閱讀 2618·2019-08-30 13:07
閱讀 2845·2019-08-29 16:57
閱讀 913·2019-08-29 15:26
閱讀 3555·2019-08-29 13:08
閱讀 1996·2019-08-29 12:32
閱讀 3391·2019-08-26 13:57