Springboot Data Jdbc实体类json格式存储

日常需求中有些需求需要在某字段存储json格式数据,例如日志审计接口传参数据等

1.首先我们得保证数据库字段为text或者json

2.设置读转换和写转换器

import com.fasterxml.jackson.databind.ObjectMapper;
import org.springframework.core.convert.converter.Converter;
import org.springframework.data.convert.ReadingConverter;

import java.io.IOException;

@ReadingConverter
public class OrderPageQueryReadConverter implements Converter<String, OrderPageQuery> {
    private final ObjectMapper objectMapper = new ObjectMapper();

    @Override
    public OrderPageQuery convert(String source) {
        try {
            return objectMapper.readValue(source, OrderPageQuery.class);
        } catch (IOException e) {
            throw new RuntimeException("Failed to convert JSON to OrderPageQuery", e);
        }
    }
}
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.springframework.core.convert.converter.Converter;
import org.springframework.data.convert.WritingConverter;

@WritingConverter
public class OrderPageQueryWriteConverter implements Converter<OrderPageQuery, String> {
    private final ObjectMapper objectMapper = new ObjectMapper();

    @Override
    public String convert(OrderPageQuery source) {
        try {
            return objectMapper.writeValueAsString(source);
        } catch (JsonProcessingException e) {
            throw new RuntimeException("Failed to convert OrderPageQuery to JSON", e);
        }
    }
}

3.添加Data Jdbc配置

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.jdbc.core.convert.JdbcCustomConversions;

import java.util.Arrays;
/**
 * 添加之后data-jdbc实体类字段会自动转换
 * @Author:nxj
 * @Date:2024/5/20 9:33
 */
@Configuration
public class DataJdbcConfig {

    @Bean
    public JdbcCustomConversions jdbcCustomConversions() {
        return new JdbcCustomConversions(Arrays.asList(
                new OrderPageQueryWriteConverter(),
                new OrderPageQueryReadConverter()
        ));
    }
}

4.当然参数为private 你的实体类 你的字段名称,以上即是Data Jdbc设置实体类转换的步骤

posted @ 2024-05-20 15:22  轻寒  阅读(51)  评论(0编辑  收藏  举报