org.springframework.r2dbc.core.binding

## Interface BindMarkersFactory

- Functional Interface:
    This is a functional interface and can therefore be used as the assignment target for a lambda expression or method reference.

      @FunctionalInterface
      public interface BindMarkersFactory

  This class creates new `BindMarkers` instances to bind parameter to a specific `Statement`.

  Bind markers can be typically represented as placeholder and identifier. Placeholders are used within the query to execute so the underlying database system can substitute the placeholder with the actual value. Identifiers are used in R2DBC drivers to bind a value to a bind marker. Identifiers are typically a part of an entire bind marker when using indexed or named bind markers.

  Since:
    5.3
  Author:
    Mark Paluch
  See Also:
    `BindMarkers`, `Statement`

- - ### Method Summary

    All Methods Static Methods Instance Methods Abstract Methods Default Methods
    Modifier and Type | Method and Description
    --- | ---
    `static BindMarkersFactory` | `anonymous(String placeholder)` Create anonymous, index-based bind marker using a static placeholder.
    `BindMarkers` | `create()` Create a new `BindMarkers` instance.
    `default boolean` | `identifiablePlaceholders()` Return whether the `BindMarkersFactory` uses identifiable placeholders: `false` if multiple placeholders cannot be distinguished by just the `placeholder` identifier.
    `static BindMarkersFactory` | `indexed(String prefix, int beginWith)` Create index-based `BindMarkers` using indexes to bind parameters.
    `static BindMarkersFactory` | `named(String prefix, String namePrefix, int maxLength)` Create named `BindMarkers` using identifiers to bind parameters.
    `static BindMarkersFactory` | `named(String prefix, String namePrefix, int maxLength, Function<String,String> hintFilterFunction)` Create named `BindMarkers` using identifiers to bind parameters.

- - ### Method Detail

    - #### create

          BindMarkers create()

      Create a new `BindMarkers` instance.

    - #### identifiablePlaceholders

          default boolean identifiablePlaceholders()

      Return whether the `BindMarkersFactory` uses identifiable placeholders: `false` if multiple placeholders cannot be distinguished by just the `placeholder` identifier.

    - #### indexed

          static BindMarkersFactory indexed(String prefix,
                                            int beginWith)

      Create index-based `BindMarkers` using indexes to bind parameters. Allows customization of the bind marker placeholder `prefix` to represent the bind marker as placeholder within the query.
      Parameters:
        `prefix` - bind parameter prefix that is included in `BindMarker.getPlaceholder()` but not the actual identifier
        `beginWith` - the first index to use
      Returns:
        a `BindMarkersFactory` using `prefix` and `beginWith`
      See Also:
        `Statement.bindNull(int, Class)`, `Statement.bind(int, Object)`

    - #### anonymous

          static BindMarkersFactory anonymous(String placeholder)

      Create anonymous, index-based bind marker using a static placeholder. Instances are bound by the ordinal position ordered by the appearance of the placeholder. This implementation creates indexed bind markers using an anonymous placeholder that correlates with an index.
      Parameters:
        `placeholder` - parameter placeholder
      Returns:
        a `BindMarkersFactory` using `placeholder`
      See Also:
        `Statement.bindNull(int, Class)`, `Statement.bind(int, Object)`

    - #### named

          static BindMarkersFactory named(String prefix,
                                          String namePrefix,
                                          int maxLength)

      Create named `BindMarkers` using identifiers to bind parameters. Named bind markers can support `name hints`. If no `hint` is given, named bind markers can use a counter or a random value source to generate unique bind markers. Allows customization of the bind marker placeholder `prefix` and `namePrefix` to represent the bind marker as placeholder within the query.
      Parameters:
        `prefix` - bind parameter prefix that is included in `BindMarker.getPlaceholder()` but not the actual identifier
        `namePrefix` - prefix for bind marker name that is included in `BindMarker.getPlaceholder()` and the actual identifier
        `maxLength` - maximal length of parameter names when using name hints
      Returns:
        a `BindMarkersFactory` using `prefix` and `beginWith`
      See Also:
        `Statement.bindNull(String, Class)`, `Statement.bind(String, Object)`

    - #### named

          static BindMarkersFactory named(String prefix,
                                          String namePrefix,
                                          int maxLength,
                                          Function<String,String> hintFilterFunction)

      Create named `BindMarkers` using identifiers to bind parameters. Named bind markers support `name hints`. If no `hint` is given, named bind markers can use a counter or a random value source to generate unique bind markers.
      Parameters:
        `prefix` - bind parameter prefix that is included in `BindMarker.getPlaceholder()` but not the actual identifier
        `namePrefix` - prefix for bind marker name that is included in `BindMarker.getPlaceholder()` and the actual identifier
        `maxLength` - maximal length of parameter names when using name hints
        `hintFilterFunction` - filter `Function` to consider database-specific limitations in bind marker/variable names such as ASCII chars only
      Returns:
        a `BindMarkersFactory` using `prefix` and `beginWith`
      See Also:
        `Statement.bindNull(String, Class)`, `Statement.bind(String, Object)`