山西建设机械网站,seo优化团队,做网站属于什么专业,合肥网站搭建公司哪家好1、应用场景#xff1a;在我们的数据库表中经常会有status这个字段#xff0c;这个字段经常表示此类商品的状态#xff0c;例如#xff1a;0-删除#xff0c;1-上架#xff0c;0-下架#xff0c;等等。 2、我们返回给前端数据时#xff0c;如果在页面显示0…1、应用场景在我们的数据库表中经常会有status这个字段这个字段经常表示此类商品的状态例如0-删除1-上架0-下架等等。 2、我们返回给前端数据时如果在页面显示0、1、2显然是不合适的。 这时就需要我们定义一个枚举类来解决这个问题。 2.1 写一个枚举用于描述状态的意思
package com.by.enmus;import lombok.Getter;
import lombok.Setter;import java.util.Arrays;
import java.util.Optional;/*** pProject: wms-root - ProduceStatus/p* pPowered by scl On 2024-02-27 14:54:47/p* p描述p** author 孙臣龙 [1846080280qq.com]* version 1.0* since 17*/
public enum ProductStatus {SALE(1, 上架),OFF_SALE(2, 下架),DELETE(0, 删除);SetterGetterprivate Integer code; //状态SetterGetterprivate String desc; //状态描述ProductStatus(Integer code, String desc) {this.code code;this.desc desc;}public static ProductStatus findByCode(Integer code) {//jdk1.8提供了哪些新特性OptionalProductStatus optional Arrays.stream(ProductStatus.values()).filter(item - item.getCode().equals(code)).findFirst();/*if (optional.isPresent()){return optional.get();}return null;*/return optional.orElse(null);}
}2.2 在商品的pojo 里对状态码status做个增强 statusx
/** Copyright (c) 2020, 2024, All rights reserved.**/
package com.by.model;import com.by.enmus.ProductStatus;
import lombok.Data;import java.math.BigDecimal;
import java.time.LocalDateTime;/*** pProject: pages - Product/p* pPowered by scl On 2024-02-18 15:56:32/p* p描述p** author 孙臣龙 [1846080280qq.com]* version 1.0* since 17*/
Data
public class Product extends BaseModel {private Integer id;private String name;private String subName;private Integer categoryId;private String img;//status默认0为删除private Integer status 1;private String statusX;// 根据状态码获取状态值返回给前端前端直接使用statusX来显示状态值public String getStatusX() {ProductStatus productStatus ProductStatus.findByCode(this.status);if (productStatus ! null) {return productStatus.getDesc();}return 未定义;}private BigDecimal price;private String brief;private Integer seq;private String tags;private String lastUpdateBy;}
3、前端只需要渲染statusX这个属性值就可以了 4、附加这时也许你在查询时会出现一个bug状态为0 的也能显示出来这就需要修改我们的sql语句了。只需将状态status值大于或不等于0即可 select * from 205_productwhereif testid ! nulland id #{id}/ifif testcategoryId ! nulland categoryId #{categoryId}/ifif testids ! nulland id inforeach collectionids itemitem open( separator, close)#{item}/foreach/ifif testname ! nulland name like CONCAT(%,#{name}, %)/ifand status0/whereorder by seq desc