【问题标题】:How to convert databaseClient result into object?如何将 databaseClient 结果转换为对象?
【发布时间】:2020-02-17 11:02:54
【问题描述】:

我的任务是通过 r2dbc 数据库客户端插入实体,并将结果(映射)转换为实体。 我想这样做:

databaseClient.insert().into(ApplicationData.class)
            .using(applicationData)
            .map(converter.populateIdIfNecessary(applicationData))
            .first();

但问题是 converter 实体 MappingR2dbcConverter 不是由 spring 创建的。 所以,我决定自己创建它:

@Bean
public MappingR2dbcConverter converter(RelationalMappingContext mappingContext,
                                                             R2dbcCustomConversions r2dbcCustomConversions)....

我的问题,将结果映射转换为实体的正确方法吗?

【问题讨论】:

    标签: converters spring-data-r2dbc r2dbc


    【解决方案1】:

    R2dbc DatabaseClient 将成为 Spring 框架 5.3 的一部分,请参阅 My example for Spring 5.3 M2

    public static final BiFunction<Row, RowMetadata, Post> MAPPING_FUNCTION = (row, rowMetaData) -> Post.builder()
                .id(row.get("id", UUID.class))
                .title(row.get("title", String.class))
                .content(row.get("content", String.class))
                .status(row.get("status", Post.Status.class))
                .metadata(row.get("metadata", Json.class))
                .createdAt(row.get("created_at", LocalDateTime.class))
                .build();
    
    public Flux<Post> findAll() {
            return this.databaseClient
                    .sql("SELECT * FROM posts")
                    .filter((statement, executeFunction) -> statement.fetchSize(10).execute())
                    .map(MAPPING_FUNCTION)
                    .all();
        }
    
        public Mono<Post> findById(UUID id) {
            return this.databaseClient
                    .sql("SELECT * FROM posts WHERE id=:id")
                    .bind("id", id)
                    .map(MAPPING_FUNCTION)
                    .one();
        }
    

    【讨论】:

      猜你喜欢
      • 2020-04-23
      • 2015-01-17
      • 2019-01-24
      • 2019-12-29
      • 2010-10-10
      • 2016-12-23
      • 1970-01-01
      • 2011-01-01
      • 2011-09-10
      相关资源
      最近更新 更多