转载

总结一下sell项目

由于没有微信公众号,所以学到支付就走不下去了

建表相关:

create table `product_info`(
    `product_id` varchar(32) not null,
    `product_name` varchar(64) not null comment '商品名称',
    `product_price` decimal(8,2) not null comment '单价',
    `product_stock` int not null comment '库存',
    `product_description` varchar(64) comment '描述',
    `product_ico` varchar(512) comment '小图',
    `product_status` tinyint(3) default '0' comment '商品状态,0正常1下架'
    `category_type` int not null comment '类目编号',
    `create_time` timestamp not null default current_timestamp comment '创建时间',
    `update_time` timestamp not null default current_timestamp on update current_timestamp comment '修改时间',
    primary key(`product_id`)    
)comment '商品表';

# 自动创建时间,更新时间 配合@DynamicUpdate(实体类上)与jpa使用

jpa的使用

public interface OrderMasterRepository extends JpaRepository<OrderMaster,String> {
    Page<OrderMaster> findByBuyerOpenid(String buyerOpenid, Pageable pageable);
}

枚举

根据需要定义多个枚举,如订单状态可为一个,支付状态可为一个,不要把所有状态定义在一个枚举里面

jpa分页

public interface OrderMasterRepository extends JpaRepository<OrderMaster,String> {

    Page<OrderMaster> findByBuyerOpenid(String buyerOpenid, Pageable pageable);
}

controller:接受 page,size:

PageRequest pageRequest = new PageRequest(page,size);
Page<OrderDTO> orderDTOPage = orderService.findList(openid, pageRequest);

DTO

根据需要定义DTO在业务中传递

控制时间磋长度:

public class Date2LongSerializer  extends JsonSerializer<Date> {
    @Override
    public void serialize(Date date, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException, JsonProcessingException {
        jsonGenerator.writeNumber(date.getTime()/1000);
    }
}


然后在传输类变量中使用,

 @JsonSerialize(using = Date2LongSerializer.class)
 private Date createTime;

效果 :时间缩短3位

返回 json

public class ProductVO {
    @JsonProperty("name")
    private String categoryName;
    @JsonProperty("type")
    private Integer categoryType;
    @JsonProperty("foods")
    private List<ProductInfoVO> productInfoVOList;
}

json返回字段 则是:
name
type
foods

去掉返回json中为null字段的显示

spring:
  jackson:
    default-property-inclusion: non_null

对象的copy

把orderMaster对象中的字段值复制到orderDTO的 字段中(只会复制相同名称的变量里面的值)

BeanUtils.copyProperties(orderMaster,orderDTO);

表单验证controller这样接受判断

public ResultVO<Map<String,String>>create(@Valid OrderForm orderForm,
                                              BindingResult bindingResult){
        Map<String,String> map = new HashMap<>();
        if(bindingResult.hasErrors()){
            log.error("【创建订单】 表单参数不正确,orderForm={}",orderForm );
            throw new SellException(ResultEnum.PARAM_ERROR.getCode(),
                    bindingResult.getFieldError().getDefaultMessage());
        }

Lambda表达式

List<Integer> categoryTypeList = productInfoList.stream()
                .map(e -> e.getCategoryType())
                .collect(Collectors.toList());
                

把集合productInfoList里面的productInfo.getCategoryType()遍历在categoryTypeList
原文  https://segmentfault.com/a/1190000020437835
正文到此结束
Loading...