编程语言
首页 > 编程语言> > 如何将 List<String> 类型的数据转换为 JSON 格式的字符串并存储在数据库中?

如何将 List<String> 类型的数据转换为 JSON 格式的字符串并存储在数据库中?

作者:互联网

使用 AttributeConverter 处理 List<String>

  1. 创建 AttributeConverter
import javax.persistence.AttributeConverter;
import javax.persistence.Converter;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;

import java.io.IOException;
import java.util.List;

@Converter(autoApply = true)
public class StringListConverter implements AttributeConverter<List<String>, String> {

    private static final ObjectMapper objectMapper = new ObjectMapper();

    @Override
    public String convertToDatabaseColumn(List<String> stringList) {
        if (stringList == null) {
            return null;
        }
        try {
            return objectMapper.writeValueAsString(stringList);
        } catch (JsonProcessingException e) {
            throw new RuntimeException("Failed to convert List<String> to JSON string", e);
        }
    }

    @Override
    public List<String> convertToEntityAttribute(String jsonString) {
        if (jsonString == null) {
            return null;
        }
        try {
            return objectMapper.readValue(jsonString, new TypeReference<List<String>>() {});
        } catch (IOException e) {
            throw new RuntimeException("Failed to convert JSON string to List<String>", e);
        }
    }
}

Java
  1. 在实体类中使用转换器
import javax.persistence.*;
import java.util.List;

@Entity
public class User {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    private String name;

    @Convert(converter = StringListConverter.class)
    @Column(columnDefinition = "json") // 这里可以一些数据库支持JSON
    private List<String> skills; // 使用 List<String> 类型的字段

    // getter 和 setter
}

Java

说明

注意事项

标签:
来源: