spring boot实战——微信点餐系统02:接口信息,分页工具,gson, 注解信息,表单验证,字段返回(时间处理,null处理)

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

猜你喜欢

转载自www.cnblogs.com/Lemonades/p/11745776.html
今日推荐