SpringBoot整合 R2DBC

目录

0、整合

1、声明式接口:R2dbcRepository

Repository接口


0、整合

1、导入R2DBC依赖

    <!-- https://mvnrepository.com/artifact/io.asyncer/r2dbc-mysql -->
    <dependency>
        <groupId>io.asyncer</groupId>
        <artifactId>r2dbc-mysql</artifactId>
        <version>1.0.5</version>
    </dependency>
    <!--        响应式 Spring Data R2dbc-->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-r2dbc</artifactId>
    </dependency>

2、编写配置

spring:
  r2dbc:
    password: 123456
    username: root
    url: r2dbc:mysql://localhost:3306/test
    name: test

1、声明式接口:R2dbcRepository

Repository接口

@Repository
public interface AuthorRepositories extends R2dbcRepository<TAuthor,Long> {

    //默认继承了一堆CRUD方法; 像mybatis-plus

    //QBC: Query By Criteria
    //QBE: Query By Example

    //成为一个起名工程师  where id In () and name like ?
    //仅限单表复杂条件查询
    Flux<TAuthor> findAllByIdInAndNameLike(Collection<Long> id, String name);

    //多表复杂查询

    @Query("select * from t_author") //自定义query注解,指定sql语句
    Flux<TAuthor> findHaha();


    // 1-1:关联
    // 1-N:关联
    //场景:
    // 1、一个图书有唯一作者; 1-1
    // 2、一个作者可以有很多图书: 1-N



}
### 自定义Converter

```java
package com.atguigu.r2dbc.config.converter;

import com.atguigu.r2dbc.entity.TAuthor;
import com.atguigu.r2dbc.entity.TBook;
import io.r2dbc.spi.Row;
import org.springframework.core.convert.converter.Converter;
import org.springframework.data.convert.ReadingConverter;

import java.time.Instant;


@ReadingConverter //读取数据库数据的时候,把row转成 TBook
public class BookConverter implements Converter<Row, TBook> {
    @Override
    public TBook convert(Row source) {
        if(source == null) return null;
        //自定义结果集的封装
        TBook tBook = new TBook();

        tBook.setId(source.get("id", Long.class));
        tBook.setTitle(source.get("title", String.class));

        Long author_id = source.get("author_id", Long.class);
        tBook.setAuthorId(author_id);
        //        tBook.setPublishTime(source.get("publish_time", Instant.class));


        TAuthor tAuthor = new TAuthor();
        tAuthor.setId(author_id);
        tAuthor.setName(source.get("name", String.class));

        tBook.setAuthor(tAuthor);

        return null;
    }
}
```

### 配置生效

```java
@EnableR2dbcRepositories //开启 R2dbc 仓库功能;jpa
@Configuration
public class R2DbcConfiguration {


    @Bean //替换容器中原来的
    @ConditionalOnMissingBean
    public R2dbcCustomConversions conversions(){

        //把我们的转换器加入进去; 效果新增了我们的 Converter
        return R2dbcCustomConversions.of(MySqlDialect.INSTANCE,new BookConverter());
    }
}
```

## 2、编程式组件

- R2dbcEntityTemplate 
- DatabaseClient



  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用r2dbc+mysql+springboot创建表需要以下步骤: 1. 配置MySQL连接信息,包括数据库名称、用户名、密码和MySQL的URL等。 2. 创建一个Java Bean,用于表示表中的字段和数据类型。例如,如果要创建一个名为person的表,可以在Java中创建一个名为Person的类,该类包含与表中字段对应的属性。 3. 创建一个Repository接口,用于定义插入、查询、更新和删除数据等操作。在接口中通过SQL语句进行定义,例如使用@Query注解定义插入数据的SQL语句。 4. 在Spring Boot应用程序启动时,使用Spring的自动化配置功能自动创建表。可以通过在应用程序的配置文件中添加spring.jpa.hibernate.ddl-auto属性来控制表的创建方式,例如可以将该属性设置为create或update等选项。 下面是一个简单的示例代码,用于创建一个名为person的表: 1. 在application.properties中添加MySQL数据库连接配置信息: ``` spring.r2dbc.url=r2dbc:mysql://localhost:3306/testdb spring.r2dbc.username=testuser spring.r2dbc.password=testpass ``` 2. 创建一个Person类,在其中定义表中的字段和数据类型: ```java @Data public class Person { private Long id; private String firstName; private String lastName; } ``` 3. 创建一个PersonRepository接口,在其中定义对person表的操作: ```java public interface PersonRepository extends ReactiveCrudRepository<Person, Long> { @Query("INSERT INTO person (first_name, last_name) VALUES (:firstName, :lastName)") Mono<Void> insert(@Param("firstName") String firstName, @Param("lastName") String lastName); @Query("SELECT * FROM person WHERE id = :id") Mono<Person> findById(@Param("id") Long id); } ``` 4. 在启动类中添加@EnableR2dbcRepositories注解,开启R2DBC仓库的自动化配置: ```java @SpringBootApplication @EnableR2dbcRepositories public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } } ``` 5. 启动应用程序,Spring Boot将自动创建名为person的表。如果表已经存在,则不会进行任何操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值