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设置实体类转换的步骤