springboot中有关数据库信息转换的处理

现代项目一般都是前后端分离的,前端只负责展示数据,不负责对数据处理,所以所有数据处理工作都由后端进行

比如在仿京东中的status,审核信息展示,数据库中是以0/1显示,但是前端需要以"审核/未审核"展示,这就需要后端处理完传递给前端。

1.因为实体类中不可能改变原字段类型,所以就要加一个方法,返回类型为String,方法名为getXXXXX(),判断status的值,后返回"审核/未审核"字符串

注*方法名一定要为get开头,因为pringboot将对象转json就是依据getter方法转换的,不叫getXXX()最后转为json给前端是不会有这个变量的。

2.在返回值这里为了方便管理,使用枚举,判断status值后返回枚举的值即可

复制代码
/*
* 信息审核状态枚举
* */
@Getter
@ToString
public enum StatusEnum {
    STATUS_NO(0,"审核中"),
    STATUS_YES(1,"已审")
    ;

    private Integer code;
    private String msg;
    //枚举类中构造默认为private类型
    StatusEnum() {}

    StatusEnum(Integer code, String msg) {
        this.code = code;
        this.msg = msg;
    }
}

3.前端接收传递的实体类json对象时,该方法就会变为一个String变量形式供前端调用,相当于加了一个变量,但在后端是一个方法。

4.方法名一定为getXXXXX()的格式,因为spring进行json转换时是以getter方法进行转换的,方法名部位getXXX(),是不会将其转为json变量的。⭐⭐⭐⭐⭐

5.方法不能私有,方法必须是 public 的!

  • 后端(Spring Boot)序列化对象到JSON时,只能访问到 public 的 getter 方法;

  • 如果你把 方法 设成 private 或 protected,Jackson(默认的 JSON 转换器)就不会识别和序列化这个方法,前端拿到的数据里也不会有 这个字段。

6.get方法中的status判断先进行判空操作,否者容易空指针

复制代码
@Data
@NoArgsConstructor
@AllArgsConstructor
public class Shop {
    private Integer id;

    private Integer cateId;

    private String name;

    private Integer sales;

    private String msg;

    private Integer expresslimit;

    private BigDecimal expressprice;

    private String imgurl;

    private Integer hot;

    private Integer status;

    public String getStatusText(){
        //这里需要判空否者空指针
        if(this.status!=null){
            if(this.status==0){
                return StatusEnum.STATUS_NO.getMsg();
            }else {
                return StatusEnum.STATUS_YES.getMsg();
            }
        }else{return "";}
    }
    public String getHotText(){
        //这里需要判空否者空指针
        if(this.hot!=null){
            if(this.hot==0){
                return HotEnum.HOT_NO.getMsg();
            }else {
                return HotEnum.HOT_YES.getMsg();
            }
        }else{return "";}
    }
}

其他类型数据的转换也是按照这个方式处理~~

相关推荐
牧瀬クリスだ1 分钟前
Ajax入门:从原生XHR到axios实战
java·spring boot·ajax·okhttp
IT_陈寒2 分钟前
深入理解Redis:核心原理与最佳实践
前端·人工智能·后端
来福猿3 分钟前
分布式锁 Redis 实现源码分析:SETNX、过期时间与可重入设计
数据库·redis·分布式
打工仔折腾 AI5 分钟前
鸿蒙端ToDesk远控电脑实测:蓝牙键鼠、双模式鼠标与跨端剪贴板实践
后端·python·性能优化·计算机外设·电脑·harmonyos·ai agent 实战
xiangyun618 分钟前
C++ list 模拟实现(一):手撕双向链表,从节点到迭代器
数据库·c++·算法·链表·stl·list
AINative软件工程9 分钟前
LLM 异步任务的 Webhook 工程实践:回调可靠投递、重试与幂等消费的生产设计
后端·ai编程
wespaul12 分钟前
一条自然语言命令的 49 个节点:可视化编排与每段强校验
前端·数据库
豆角焖肉16 分钟前
SpringBoot+JWT 实现前后端分离登录鉴权
java·开发语言·spring boot·jwt·前后端分离·登录认证
高频因子挖掘机17 分钟前
Python 批量获取股票行情后,如何用 Pandas 统一字段、索引和数据类型?
后端·github·api
高频因子挖掘机39 分钟前
多股票 K 线如何用 Pandas 对齐?从收益率计算到横截面分析
后端·github·api