JPA - @Convert属性映射转换器
2021/8/17 6:07:13
本文主要是介绍JPA - @Convert属性映射转换器,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
目录- 前言
- 具体实现
- Map与JSON的属性转换器
- List与JSON属性转换器
- 实体应用
- 效果图
前言
@Convert属性转换器用于数据库属性类型与java存储的类型做转换,其方便之处在于存储与读取的时候能自动转换,如下业务场景:
业务对象存在一个Map或List属性,存入数据库时需保存为json字符串,返回前端时以对象来返回。
@Convert属性转换器需实现AttributeConverter<X, Y>接口,第一个泛型类型为Entity字段类型,第二个泛型类型为数据库字段类型。
具体实现
Map与JSON的属性转换器
- MapAndJson.java
import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; import org.springframework.beans.factory.annotation.Autowired; import javax.persistence.AttributeConverter; import java.util.HashMap; import java.util.Map; /** * @Description Map与JSON映射转换器 * @author coisini * @date Aug 16, 2021 * @Version 1.0 */ public class MapAndJson implements AttributeConverter<Map<String, Object>, String> { @Autowired private ObjectMapper mapper; /** * 转换成数据库字段 * @param stringObjectMap * @return */ @Override public String convertToDatabaseColumn(Map<String, Object> stringObjectMap) { try { return mapper.writeValueAsString(stringObjectMap); } catch (JsonProcessingException e) { e.printStackTrace(); } } /** * 转换成实体字段 * @param s * @return */ @Override @SuppressWarnings("unchecked") public Map<String, Object> convertToEntityAttribute(String s) { try { return mapper.readValue(s, HashMap.class); } catch (JsonProcessingException e) { e.printStackTrace(); } } }
List与JSON属性转换器
- ListAndJson.java
import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; import org.springframework.beans.factory.annotation.Autowired; import javax.persistence.AttributeConverter; import java.util.List; /** * @Description List与JSON 映射转换器 * @author coisini * @date Aug 16, 2021 * @Version 1.0 */ public class ListAndJson implements AttributeConverter<List<Object>, String> { @Autowired private ObjectMapper mapper; @Override public String convertToDatabaseColumn(List<Object> objects) { try { return mapper.writeValueAsString(objects); } catch (JsonProcessingException e) { e.printStackTrace(); } } @Override @SuppressWarnings("unchecked") public List<Object> convertToEntityAttribute(String s) { try { return mapper.readValue(s, List.class); } catch (JsonProcessingException e) { e.printStackTrace(); } } }
实体应用
@Convert(converter = MapAndJson.class) private Map<String, Object> test; @Convert(converter = ListAndJson.class) private List<Object> specs;
效果图
- 数据库
- 前端返回数据
这篇关于JPA - @Convert属性映射转换器的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2025-01-03用LangChain构建会检索和搜索的智能聊天机器人指南
- 2025-01-03图像文字理解,OCR、大模型还是多模态模型?PalliGema2在QLoRA技术上的微调与应用
- 2025-01-03混合搜索:用LanceDB实现语义和关键词结合的搜索技术(应用于实际项目)
- 2025-01-03停止思考数据管道,开始构建数据平台:介绍Analytics Engineering Framework
- 2025-01-03如果 Azure-Samples/aks-store-demo 使用了 Score 会怎样?
- 2025-01-03Apache Flink概述:实时数据处理的利器
- 2025-01-01使用 SVN合并操作时,怎么解决冲突的情况?-icode9专业技术文章分享
- 2025-01-01告别Anaconda?试试这些替代品吧
- 2024-12-31自学记录鸿蒙API 13:实现人脸比对Core Vision Face Comparator
- 2024-12-31自学记录鸿蒙 API 13:骨骼点检测应用Core Vision Skeleton Detection