Spring Cloud Cloud Spanner 自定义类型
2024-01-11 14:54 更新
定制转换器可用于扩展对用户定义类型的类型支持。
- 转换器需要在两个方向上实现
org.springframework.core.convert.converter.Converter
接口。 -
用户定义的类型需要映射到Spanner支持的基本类型之一:
com.google.cloud.ByteArray
com.google.cloud.Date
com.google.cloud.Timestamp
java.lang.Boolean
,boolean
java.lang.Double
,double
java.lang.Long
,long
java.lang.String
double[]
long[]
boolean[]
enum
类型
- 两个转换器的实例都需要传递到
ConverterAwareMappingSpannerEntityProcessor
,然后必须将其作为SpannerEntityProcessor
的@Bean
使用。
例如:
我们希望在Trade
POJO上有一个类型为Person
的字段:
@Table(name = "trades") public class Trade { //... Person person; //... }
其中Person是一个简单的类:
public class Person { public String firstName; public String lastName; }
我们必须定义两个转换器:
public class PersonWriteConverter implements Converter<Person, String> { @Override public String convert(Person person) { return person.firstName + " " + person.lastName; } } public class PersonReadConverter implements Converter<String, Person> { @Override public Person convert(String s) { Person person = new Person(); person.firstName = s.split(" ")[0]; person.lastName = s.split(" ")[1]; return person; } }
这将在我们的@Configuration
文件中进行配置:
@Configuration public class ConverterConfiguration { @Bean public SpannerEntityProcessor spannerEntityProcessor(SpannerMappingContext spannerMappingContext) { return new ConverterAwareMappingSpannerEntityProcessor(spannerMappingContext, Arrays.asList(new PersonWriteConverter()), Arrays.asList(new PersonReadConverter())); } }
以上内容是否对您有帮助:
更多建议: