• SpringBoot整合 R2DBC


    目录

    0、整合

    1、声明式接口:R2dbcRepository

    Repository接口


    0、整合

    1、导入R2DBC依赖

    1.    
    2.    
    3.        io.asyncer
    4.        r2dbc-mysql
    5.        1.0.5
    6.    
    7.    
    8.    
    9.        org.springframework.boot
    10.        spring-boot-starter-data-r2dbc
    11.    

    2、编写配置

    1. spring:
    2. r2dbc:
    3.   password: 123456
    4.   username: root
    5.   url: r2dbc:mysql://localhost:3306/test
    6.   name: test

    1、声明式接口:R2dbcRepository

    Repository接口

    1. @Repository
    2. public interface AuthorRepositories extends R2dbcRepository {
    3. //默认继承了一堆CRUD方法; 像mybatis-plus
    4. //QBC: Query By Criteria
    5. //QBE: Query By Example
    6. //成为一个起名工程师 where id In () and name like ?
    7. //仅限单表复杂条件查询
    8. Flux findAllByIdInAndNameLike(Collection id, String name);
    9. //多表复杂查询
    10. @Query("select * from t_author") //自定义query注解,指定sql语句
    11. Flux findHaha();
    12. // 1-1:关联
    13. // 1-N:关联
    14. //场景:
    15. // 1、一个图书有唯一作者; 1-1
    16. // 2、一个作者可以有很多图书: 1-N
    17. }
    1. ### 自定义Converter
    2. ```java
    3. package com.atguigu.r2dbc.config.converter;
    4. import com.atguigu.r2dbc.entity.TAuthor;
    5. import com.atguigu.r2dbc.entity.TBook;
    6. import io.r2dbc.spi.Row;
    7. import org.springframework.core.convert.converter.Converter;
    8. import org.springframework.data.convert.ReadingConverter;
    9. import java.time.Instant;
    10. @ReadingConverter //读取数据库数据的时候,把row转成 TBook
    11. public class BookConverter implements Converter {
    12. @Override
    13. public TBook convert(Row source) {
    14. if(source == null) return null;
    15. //自定义结果集的封装
    16. TBook tBook = new TBook();
    17. tBook.setId(source.get("id", Long.class));
    18. tBook.setTitle(source.get("title", String.class));
    19. Long author_id = source.get("author_id", Long.class);
    20. tBook.setAuthorId(author_id);
    21. // tBook.setPublishTime(source.get("publish_time", Instant.class));
    22. TAuthor tAuthor = new TAuthor();
    23. tAuthor.setId(author_id);
    24. tAuthor.setName(source.get("name", String.class));
    25. tBook.setAuthor(tAuthor);
    26. return null;
    27. }
    28. }
    29. ```
    30. ### 配置生效
    31. ```java
    32. @EnableR2dbcRepositories //开启 R2dbc 仓库功能;jpa
    33. @Configuration
    34. public class R2DbcConfiguration {
    35. @Bean //替换容器中原来的
    36. @ConditionalOnMissingBean
    37. public R2dbcCustomConversions conversions(){
    38. //把我们的转换器加入进去; 效果新增了我们的 Converter
    39. return R2dbcCustomConversions.of(MySqlDialect.INSTANCE,new BookConverter());
    40. }
    41. }
    42. ```
    43. ## 2、编程式组件
    44. - R2dbcEntityTemplate
    45. - DatabaseClient
  • 相关阅读:
    bean的生命周期
    低功耗局域网通信硬件之lora——sx1262-sx1276硬件设计开发
    C++-list实现相关细节和问题
    CSS Display(显示) 与 Visibility(可见性)
    Spring RequestContextHolder
    第四代智能井盖传感器,万宾科技助力城市安全
    UE4学习日记15(怪兽)
    美国高防服务器到底好不好用
    sed的介绍及应用
    【C++】类和对象(中)
  • 原文地址:https://blog.csdn.net/qq_63438013/article/details/136548847