摘要:项目环境用于发送请求测试项目介绍这是一个商城项目,本来想起名叫项目,发现自己并没有用。也是自己第一篇博客,记录一下自己的学习过程,希望一方面能多做写项目锻炼能力,另一方面也让自己在做完之后写写博客自己总结反思。
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,就先这样吧。
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/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这个关键字可能...
阅读 1962·2023-04-25 14:50
阅读 2890·2021-11-17 09:33
阅读 2586·2019-08-30 13:07
阅读 2818·2019-08-29 16:57
阅读 858·2019-08-29 15:26
阅读 3501·2019-08-29 13:08
阅读 1945·2019-08-29 12:32
阅读 3345·2019-08-26 13:57