Interface SelectDSLCompleter

  • All Superinterfaces:
    Function<QueryExpressionDSL<SelectModel>,​Buildable<SelectModel>>
    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 SelectDSLCompleter
    extends Function<QueryExpressionDSL<SelectModel>,​Buildable<SelectModel>>
    Represents a function that can be used to create a general select method. When using this function, you can create a method that does not require a user to call the build() and render() methods - making client code look a bit cleaner.

    This function is intended to by used in conjunction with utility methods like the select methods in MyBatis3Utils.

    For example, you can create mapper interface methods like this:

     @SelectProvider(type=SqlProviderAdapter.class, method="select")
     List<PersonRecord> selectMany(SelectStatementProvider selectStatement);
    
     BasicColumn[] selectList =
         BasicColumn.columnList(id, firstName, lastName, birthDate, employed, occupation, addressId);
    
     default List<PersonRecord> select(SelectDSLCompleter completer) {
          return MyBatis3Utils.select(this::selectMany, selectList, person, completer);
     }
     

    And then call the simplified default method like this:

     List<PersonRecord> rows = mapper.select(c ->
             c.where(occupation, isNull()));
     

    You can implement a "select all" with the following code:

     List<PersonRecord> rows = mapper.select(c -> c);
     

    Or

     List<PersonRecord> rows = mapper.select(SelectDSLCompleter.allRows());
     

    There is also a utility method to support selecting all rows in a specified order:

     List<PersonRecord> rows = mapper.select(SelectDSLCompleter.allRowsOrderedBy(lastName, firstName));
     
    Author:
    Jeff Butler
    • Method Detail

      • allRows

        static SelectDSLCompleter allRows()
        Returns a completer that can be used to select every row in a table.
        Returns:
        the completer that will select every row in a table
      • allRowsOrderedBy

        static SelectDSLCompleter allRowsOrderedBy​(SortSpecification... columns)
        Returns a completer that can be used to select every row in a table with specified order.
        Parameters:
        columns - list of sort specifications for an order by clause
        Returns:
        the completer that will select every row in a table with specified order