Package org.jooq

Interface Converter<T,​U>

  • Type Parameters:
    T - The database type - i.e. any type available from SQLDataType
    U - The user type
    All Superinterfaces:
    java.io.Serializable
    All Known Implementing Classes:
    AbstractConverter, Converters, DateToLocalDateConverter, DelegatingConverter, EnumConverter, JPAConverter, TimestampToLocalDateTimeConverter, TimeToLocalTimeConverter

    public interface Converter<T,​U>
    extends java.io.Serializable
    A Converter for data types.

    A general data type conversion interface that can be provided to jOOQ at various places in order to perform custom data type conversion. Conversion is directed, this means that the Converter is used

    • to load database types converting them to user types "FROM" the database. Hence, fromType() is the type as defined in the database.
    • to store user types converting them to database types "TO" the database. Hence, toType() is the user-defined type

    Note: In order to avoid unwanted side-effects, it is highly recommended (yet not required) for from(Object) and to(Object) to be reciprocal. The two methods are reciprocal, if for all X and Y, it can be said that

    • if Y.equals(converter.from(X)), then X.equals(converter.to(Y)).
    • X.equals(converter.from(converter.to(X)))
    • X.equals(converter.to(converter.from(X)))

    Furthermore, it is recommended (yet not required) that

    • converter.from(null) == null
    • converter.to(null) == null

    Creating user defined DataTypes

    jOOQ provides built in data types through SQLDataType. Users can define their own data types programmatically by calling DataType.asConvertedDataType(Converter) or DataType.asConvertedDataType(Binding), for example. Custom data types can also be defined on generated code using the <forcedType/> configuration, see the manual for more details

    Author:
    Lukas Eder
    • Method Summary

      All Methods Static Methods Instance Methods Abstract Methods Default Methods 
      Modifier and Type Method Description
      default <X> Converter<T,​X> andThen​(Converter<? super U,​X> converter)
      Chain a converter to this converter.
      U from​(T databaseObject)
      Convert a database object to a user object
      java.lang.Class<T> fromType()
      The database type
      default Converter<U,​T> inverse()
      Inverse this converter.
      static <T,​U>
      Converter<T,​U>
      of​(java.lang.Class<T> fromType, java.lang.Class<U> toType, java.util.function.Function<? super T,​? extends U> from, java.util.function.Function<? super U,​? extends T> to)
      Construct a new converter from functions.
      static <T,​U>
      Converter<T,​U>
      ofNullable​(java.lang.Class<T> fromType, java.lang.Class<U> toType, java.util.function.Function<? super T,​? extends U> from, java.util.function.Function<? super U,​? extends T> to)
      Construct a new converter from functions.
      T to​(U userObject)
      Convert a user object to a database object
      java.lang.Class<U> toType()
      The user type
    • Method Detail

      • from

        U from​(T databaseObject)
        Convert a database object to a user object
        Parameters:
        databaseObject - The database object
        Returns:
        The user object
      • to

        T to​(U userObject)
        Convert a user object to a database object
        Parameters:
        userObject - The user object
        Returns:
        The database object
      • fromType

        java.lang.Class<T> fromType()
        The database type
      • toType

        java.lang.Class<U> toType()
        The user type
      • inverse

        default Converter<U,​T> inverse()
        Inverse this converter.
      • andThen

        default <X> Converter<T,​X> andThen​(Converter<? super U,​X> converter)
        Chain a converter to this converter.
      • of

        static <T,​U> Converter<T,​U> of​(java.lang.Class<T> fromType,
                                                   java.lang.Class<U> toType,
                                                   java.util.function.Function<? super T,​? extends U> from,
                                                   java.util.function.Function<? super U,​? extends T> to)
        Construct a new converter from functions.
        Type Parameters:
        T - the database type
        U - the user type
        Parameters:
        fromType - The database type
        toType - The user type
        from - A function converting from T to U
        to - A function converting from U to T
        Returns:
        The converter.
        See Also:
        Converter
      • ofNullable

        static <T,​U> Converter<T,​U> ofNullable​(java.lang.Class<T> fromType,
                                                           java.lang.Class<U> toType,
                                                           java.util.function.Function<? super T,​? extends U> from,
                                                           java.util.function.Function<? super U,​? extends T> to)
        Construct a new converter from functions.

        This works like of(Class, Class, Function, Function), except that both conversion Functions are decorated with a function that always returns null for null inputs.

        Example:

         Converter<String, Integer> converter =
           Converter.ofNullable(String.class, Integer.class, Integer::parseInt, Object::toString);
        
         // No exceptions thrown
         assertNull(converter.from(null));
         assertNull(converter.to(null));
         
        Type Parameters:
        T - the database type
        U - the user type
        Parameters:
        fromType - The database type
        toType - The user type
        from - A function converting from T to U
        to - A function converting from U to T
        Returns:
        The converter.
        See Also:
        Converter