Spring Cloud Cloud Spanner 自定义类型

2024-01-11 14:54 更新

定制转换器可用于扩展对用户定义类型的类型支持。

  1. 转换器需要在两个方向上实现org.springframework.core.convert.converter.Converter接口。
  2. 用户定义的类型需要映射到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类型
  3. 两个转换器的实例都需要传递到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()));
	}
}
以上内容是否对您有帮助:
在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号