Spring @Converter 自动完成复杂对象的映射

2,192 阅读1分钟

@Converter的作用

用于数据库属性类型与java存储的类型做转换,例如可以将一个实体类按照json转化成字符串存到mysql数据库中,包括从数据库中读出来后转化成实体类.

适用于所有java非基本类型, 可以转换成json也可以自定义转换规则(实现相应方法即可)

实现原理

必须实现接口AttributeConverter<X,Y> convertToDatabaseColumn(X attribute)用于把输入的类型转成数据库存储的类型 convertToEntityAttribute (Y dbData) 用于把数据库搜出来的类型转成实体中想要的类型

如何使用

在实体类属性上,加入@Convert注解,把转换器设置成上面实现的转换器。存储值时就会调用convertToDatabaseColumn方法,把code存入数据库,查询值时就会调用convertToEntityAttribute方法,转成对应类型。

@Column(name = "test_list", columnDefinition = "VARCHAR")
@Convert(converter = StringListConverter.class)
private ArrayList<String> testList;