PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

R2DBC i wyliczenie (PostgreSQL)

Przetestowane za pomocą org.springframework.data:spring-data-r2dbc:1.0.0.RELEASE i io.r2dbc:r2dbc-postgresql:0.8.1.RELEASE .

Wersja Kotlina.

  1. Zdefiniuj klasę enum

    enum class Mood {
        UNKNOWN,
        HAPPY,
        SAD
    }
    
  2. Utwórz niestandardowy kodek

    class MoodCodec(private val allocator: ByteBufAllocator) :  Codec<Mood> {
        override fun canEncodeNull(type: Class<*>): Boolean = false
    
        override fun canEncode(value: Any): Boolean = value is Mood
    
        override fun encode(value: Any): Parameter {
            return Parameter(Format.FORMAT_TEXT, oid) {
                ByteBufUtils.encode(allocator, (value as Mood).name)
            }
        }
    
        override fun canDecode(dataType: Int, format: Format, type: Class<*>): Boolean = dataType == oid
    
        override fun decode(buffer: ByteBuf?, dataType: Int, format: Format, type: Class<out Mood>): Mood? {
            buffer ?: return null
            return Mood.valueOf(ByteBufUtils.decode(buffer))
        }
    
        override fun type(): Class<*> = Mood::class.java
    
        override fun encodeNull(): Parameter =
            Parameter(Format.FORMAT_TEXT, oid, Parameter.NULL_VALUE)
    
        companion object {
            // Get form `select oid from pg_type where typname = 'mood'`
            private const val oid = YOUR_ENUM_OID
        }
    }
    
  3. Zarejestruj kodek

    Może być konieczna zmiana runtimeOnly("io.r2dbc:r2dbc-postgresql") do implementation("io.r2dbc:r2dbc-postgresql")

    @Configuration
    @EnableR2dbcRepositories
    class AppConfig : AbstractR2dbcConfiguration() {
        override fun connectionFactory(): ConnectionFactory = PostgresqlConnectionConfiguration.builder()
            .port(5432) // Add your config here.
            .codecRegistrar { _, allocator, registry ->
                registry.addFirst(MoodCodec(allocator))
                Mono.empty()
            }.build()
            .let { PostgresqlConnectionFactory(it) }
    }
    



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. BŁĄD:nie można załadować biblioteki „/opt/PostgreSQL/9.0/lib/postgresql/plperl.so”:libperl.so:

  2. Wysyłasz tablicę wartości do zapytania sql w ruby?

  3. Wiersz poleceń Windows PSQL:czy istnieje sposób na umożliwienie logowania bez hasła?

  4. Jak zaktualizować wiersze dwóch tabel, które mają ograniczenia dotyczące kluczy obcych

  5. Błąd zakleszczenia w instrukcji INSERT