Use limit/offset instead of Page and accept Expression objects to declare a select list. Use SqlIdentifier in Update, Query, Criteria and fluent API.
Original pull request: #287.
We now provide a Template API that exposes entity-centric methods. It complements DatabaseClient's simple object mapper methods.
Original pull request: #287.
We now use SqlIdentifier to encapsulate the table and column name across the API. The fluent DatabaseClient API accepts the table name and select column projections as SqlIdentifier. The Criteria API remains String-based as names for Query and Update objects may reference either column names or property names.
QueryMapper and UpdateMapper require now a R2DBC dialect object to be constructed. R2dbcMappingContext is configured in a way to not require quoting to preserve backwards compatibility.
We now use the Id property name when using the converter to map property names to column names. In other places, where we don't use the converter, we stick with the Id column name.
We now support interface projections when using as(Class) through ProjectionFactory. Simple, type-less queries (execute, select from table) are backed by Map implementations and require the projection type to return a similar type than the expected value. Simple types (such as numeric types) are converted between the backing result and the projection. Conversion of complex types requires a source with type information such as a typed select (select().from(Person.class).as(PersonProjection.class)) to apply registered converters on property-level.
We now properly throw an IllegalArgumentException. Previously, the update object was attempted to being mapped and this failed as the update object was null.
We now inspect the value type of a SettableValue before attempting to convert a value into an array type. This check allows applying custom conversions to map objects to a simple type and bypassing the array conversion afterwards.
Previously, we just relied on the property type without checking whether the value qualifies for array type conversion.