• 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
  • 相关阅读:
    学习笔记19--自动驾驶智能化指标评测体系(下)
    《代码随想录》刷题笔记——字符串篇【java实现】
    【AI设计模式】03-数据处理-流水线(Pipeline)模式
    5、React组件生命周期
    logback.xml配置详解
    springboot集成Quartz定时任务组件
    WebGIS之实现查询地区天气并让地区高亮
    Java final修饰符详解
    Flutter高仿微信-第51篇-群聊-修改群名
    学习笔记-RCE
  • 原文地址:https://blog.csdn.net/qq_63438013/article/details/136548847