码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 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
  • 相关阅读:
    关于训练时,最后一轮batch_size=1的报错
    【ubuntu】 Linux(ubuntu)创建python的虚拟环境
    Taurus.MVC 微服务框架 入门开发教程:项目部署:6、微服务应用程序Docker部署实现多开。
    SystemVerilog Assertions应用指南 Chapter1.29“ disable iff构造
    Vue脚手架搭建及说明
    Spring Boot日志配置logback
    spring源码干货分享-对象创建详细解析(set注入和初始化)
    qml+QQuickPaintedItem笛卡尔坐标和屏幕坐标的转换
    Gin Web框架在Go语言中的应用与实践
    y138.第八章 Servless和Knative从入门到精通 -- Knative基础(二)
  • 原文地址:https://blog.csdn.net/qq_63438013/article/details/136548847
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号