前端传送的数组在后端的MySQL中如何保存

本文讲述了作者在开发小程序时遇到的问题,前端将图片URL数组发送给后端SpringBoot服务,MySQL数据库不支持数组类型。通过将数组转化成字符串存储并解析,解决了这个问题。介绍了数据接收和处理的代码实现,以及性能优化的考虑。
摘要由CSDN通过智能技术生成

        今天在自己打小程序项目的时候(后端spring boot)发现有个问题,前端有个上传图片我的功能,前端将文件保存为一个url的数组(imgList[])传送到后端,后端进行处理,但我在后端使用的是mysql数据库,存储的类型不支持数组类型,在传输的过程中报错,原因是我在后端的数据库的imgList设置为了String的类型。

        在想如何解决的时候,其实url本质上就是一个字符串,我们可以将url数组转化成url字符串并用,隔开存入数据库中,再用时候再将url字符串转化成数组,在实现的时候可以在后端转换成字符串也可以在前端将数组转化成字符串转过去

        在前端利用const imgListString = imgList.join(',');将imgList数组转化为以,隔开的字符串并存到imgListString中再将数据发送到后端。

在这里简单介绍一下这个部分功能,主要是小程序(校园二手交易论坛)的一个主页我写的组件的一个显示功能。完成的样子大概是

我在后端的接收的前端的信息类为

import java.math.BigInteger;
import java.util.List;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.apache.catalina.valves.JsonAccessLogValve;
import com.fasterxml.jackson.databind.ObjectMapper;
import java.time.*;

@Data
@NoArgsConstructor
@AllArgsConstructor
public class Issue {
    private Integer id;//每个
    private Integer type;//校区
    private Integer price;//价格
    private String classify;//分类
    private String nickname;//用户名
    private String name;//商品名
    private String introduction;//简介
    private String imgListString;//图片url字符串
    private String avatarUrl;//用户头像
    private BigInteger time;//时间戳
    private String[] imgList;//图片url数组
}

在接收数据的时候,由于是接受若干条数据,所以我在后端接受的方法设置为了List<Issue>类型,在处理的时候文明也要一个个进行转化(有些麻烦不知道有没有更好的方法)具体实现部分为

public List<Issue> getByType(Integer type) {
        List<Issue> issueList = issueMapper.getByType(type);
        for (Issue issue : issueList) {
            processImgListString(issue);
        }
        return issueList;
    }
    private void processImgListString(Issue issue) {
        if (issue != null && issue.getImgListString() != null && !issue.getImgListString().isEmpty()) {
            // 使用逗号分隔符拆分字符串
            issue.setImgList(issue.getImgListString().split(","));
        }
    }

其中issueMapper是接受数据库传送数据的一个对象,getByType可以获取List<Issue>的对象issue.getImgListString().split(",") 是一个字符串操作,它将 imgListString 字符串使用逗号 , 作为分隔符拆分为一个字符串数组。这样前端就能接受到数据了

        在前端的控制台输入传送信息如图

        可以看到传送的imgList数组和imgListString字符串,可以看到是经过转化了,当然了,在实际项目中字符串可以不用传输,当查很多条数据时候还会影响速度

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值