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