ServiceImpl一定要加注解 @service ,测试类一定要加 @SpringBootTest!!!!!!
调用更新操作要使用事务,@Transactional(rollbackFor=Exception.class)
1、商品信息
商品Dao:
查询在架商品
商品Service:
根据Id查询商品
前端查询所有在架商品
后端查询所有商品(注意加一个分页参数:使用springframework的 Pageable 接口类) ----》在服务端可以使用 PageRequest 类,它是 pageable 类的实现类。
保存商品
加库存
减库存
商品controller
#1 访问 http://192.168.43.18/#/order
#2 在控制台 console 输入 document.cookie='openid=abc123'
#3 配置Nginx 将请求转到开发环境的连接,注意:如果使用WiFi网络,要用下面的IPV4地址 http://192.168.43.104:8080/sell/buyer/product/list
2、订单主表信息
订单主表dao:
工具微信OpenId查找订单
订单详情表dao:
根据订单Id查找订单详情 List findByOrderId
订单主表service:
创建订单 注意扣库存的并发时,多人同时扣库存,会导致超卖! 使用 Redis解决
查询单个订单
查询订单列表
取消订单
完结订单
支付订单
工具:
将一个对象相对应的属性复制另一个对象相同的属性:BeanUtils.copyProperties(productInfo,productInfoVO);
关于分页:
在service使用 Pageable pageable()做形参, controller 使用 Pageable 的实现类 PageRequest 当实参,返回值使用 Page 的 PageImpl 带数据回来。
import org.springframework.data.domain.Pageable; #service Page<ProductInfo> findAll(Pageable pageable); #service impl @Override public Page<ProductInfo> findAll(Pageable pageable) { return repository.findAll(pageable); } #在controller PageRequest pageRequest=PageRequest.of(0,5); Page<ProductInfo> page = productService.findAll(pageRequest);
gson 将前端传过来的表单字符串,字符串转换为 list
转字符串:https://blog.csdn.net/bingqilin_/article/details/48341093 详细介绍:https://www.jianshu.com/p/eaa72df1f015
注:关于注解
dao加的注解:
@Entity #加到持久层 @Data #lombok的注解 @Id @DynamicUpdate #时间戳自动更新 @GeneratedValue(strategy = GenerationType.IDENTITY) #主键自动增长
service加的注解:
@service
Test 测试类加的注解:
@SpringBootTest @Transactional #测试后,进行数据回滚
商品controller
@RestController
VO ,View Object
@JsonProperty("name") #返回数据的时候,使用别名
Form 表单验证 :https://www.cnblogs.com/WHL5/p/9242906.html
@NotEmpty(message = "地址必填")
@Null 验证对象是否为空
@NotNull 验证对象是否为非空
@AssertTrue 验证 boolean 对象是否为 true
@AssertFalse 验证 boolean 对象是否为 false
@NotEmpty 验证注解的元素值不为null且不为空(字符串长度不为0、集合大小不为0)
字段返回(时间处理,null处理)
时间可在配置文件修改 json 的配置
https://blog.csdn.net/z_k_h/article/details/82253530
spring jackson: time-zone: GMT+8 date-format: yyyy-MM-dd HH:mm:ss
当值为 null 时,不返回
方法1:在对象上添加注解,单个类生效
@JsonInclude(JsonInclude.Include.NON_NULL)
方法2:全局配置文件添加
spring.jackson.default-property-inclusion: non_null
当对象属性为 null 时,返回默认值 : 直接在对象类设置属性值 private List<OrderDetail> orderDetailList = new ArrayList<>(); (这样可能不太建议,可以寻找其他方法)
end