行业知识
状态码转文字!!!(表格数字转文字)
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;/** *Project: wms-root - ProduceStatus
*Powered by scl On 2024-02-27 14:54:47
*描述:
* * @author 孙臣龙 [1846080280@qq.com] * @version 1.0 * @since 17 */public enum ProductStatus { SALE(1, "上架"), OFF_SALE(2, "下架"), DELETE(0, "删除"); @Setter @Getter private Integer code; //状态 @Setter @Getter private String desc; //状态描述 ProductStatus(Integer code, String desc) { this.code = code; this.desc = desc; } public static ProductStatus findByCode(Integer code) { //jdk1.8提供了哪些新特性 Optional 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;/** *Project: pages - Product
*Powered by scl On 2024-02-18 15:56:32
*描述:
* * @author 孙臣龙 [1846080280@qq.com] * @version 1.0 * @since 17 */@Datapublic 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_product and id = #{id} and categoryId = #{categoryId} and id in #{item} and name like CONCAT('%',#{name}, '%') and status>0 order by seq desc
上一篇:煞神服务器怎么进去?