r2dbc配置枚举转换器

简介: r2dbc配置枚举转换器


你如果愿意做哲学家,尽管做好了,但是你在你的全部哲学思维中,仍然要做一个人。——休谟

首先配置Converter

import jakarta.annotation.Nullable;
import org.springframework.core.convert.converter.Converter;
import org.springframework.data.convert.WritingConverter;
import org.springframework.stereotype.Component;
/**
 * EnumToIntConverter
 *
 * @author achao@apache.org
 */
@Component
@WritingConverter
public class AgoraNotifyTypeEnumToIntConverter implements Converter<AgoraNotifyTypeEnum, Integer> {
    @Override
    public Integer convert(@Nullable AgoraNotifyTypeEnum source) {
        if (source == null) {
            return null;
        }
        return source.getValue();
    }
}

以及

import cn.hutool.core.util.EnumUtil;
import jakarta.annotation.Nullable;
import org.springframework.core.convert.converter.Converter;
import org.springframework.data.convert.ReadingConverter;
import org.springframework.stereotype.Component;
/**
 * IntToIEnumConverter
 *
 * @author achao@apache.org
 */
@Component
@ReadingConverter
public class IntToAgoraNotifyTypeEnumConverter implements Converter<Integer, AgoraNotifyTypeEnum> {
    @Override
    public AgoraNotifyTypeEnum convert(@Nullable Integer source) {
        if (source == null) {
            return null;
        }
        return EnumUtil.getBy(AgoraNotifyTypeEnum::getValue, source);
    }
}

然后还需要配置

import io.r2dbc.spi.ConnectionFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.convert.converter.Converter;
import org.springframework.data.convert.CustomConversions;
import org.springframework.data.r2dbc.convert.R2dbcCustomConversions;
import org.springframework.r2dbc.connection.R2dbcTransactionManager;
import org.springframework.transaction.ReactiveTransactionManager;
import org.springframework.transaction.reactive.TransactionalOperator;
import java.util.List;
/**
 * R2dbcConfig
 *
 * @author VampireAchao<achao @ hutool.cn>
 * @since 2023/10/27
 */
@Configuration
public class R2dbcConfig {
    @Bean
    public R2dbcCustomConversions r2dbcCustomConversions(List<Converter<?, ?>> converters) {
        return new R2dbcCustomConversions(CustomConversions.StoreConversions.NONE, converters);
    }
}


相关文章
|
Java 数据库连接 索引
Mybatis (ParameterType) 如何传递多个不同类型的参数
偶然碰到一个需要给xml传一个String类型和一个Integer类型的需求,当时心想用map感觉有点太浪费,所以专门研究了下各种方式。 方法一:不需要写parameterType参数 public List getXXXBeanList(String xxId, String xxCode);   select t.
4497 0
TS,类型注解 number就是类型注解,TS类型注解是一种为变量添加类型约束的方式,你定义什么类型,就只能赋值什么类型,变量命名规则,变量名称不能以数字开头,交换变量写法
TS,类型注解 number就是类型注解,TS类型注解是一种为变量添加类型约束的方式,你定义什么类型,就只能赋值什么类型,变量命名规则,变量名称不能以数字开头,交换变量写法
|
6月前
SpringMVC自定义类型转换器并开启
SpringMVC自定义类型转换器并开启
stream-core实现枚举校验
stream-core实现枚举校验
50 0
注解支持@Alias同步值
注解支持@Alias同步值
100 0
EF数据类里面使用枚举类型enum
EF数据类里面使用枚举类型enum
52 0
|
数据库
通用mapper(tk.mybatis) 使用Enum枚举类型字段的注意事项
通用mapper(tk.mybatis) 使用Enum枚举类型字段的注意事项
308 0
VB编程:Enum创建包含12个月的枚举类型
VB编程:Enum创建包含12个月的枚举类型
361 0
VB编程:Enum创建包含12个月的枚举类型-20
VB编程:Enum创建包含12个月的枚举类型-20
112 0