@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;