Class Query<T extends BaseEntity>


  • public class Query<T extends BaseEntity>
    extends java.lang.Object
    A class representing a DQL statement with different options, including where clauses, order by clauses and limits. It also automatically joins foreign keys so the corresponding entities (marked with the ForeignKeyEntity attribute) can be filled.
    Author:
    Collin Alpert
    • Constructor Summary

      Constructors 
      Constructor Description
      Query​(java.lang.Class<T> type, Mapper<T> mapper)
      Constructor for creating a DQL statement for a given entity.
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      java.util.Optional<T> getFirst()
      Gets the first row of a query.
      java.lang.String getQuery()  
      Query<T> limit​(int limit)
      Limits the result of the rows returned to a maximum of the passed integer.
      Query<T> limit​(int limit, int offset)
      Limits the result of the rows returned to a maximum of the passed integer with an offset.
      Query<T> orderBy​(com.github.collinalpert.lambda2sql.functions.SqlFunction<T,​?> function)
      Sets an ORDER BY clause for the DQL statement.
      Query<T> orderBy​(com.github.collinalpert.lambda2sql.functions.SqlFunction<T,​?> function, OrderTypes type)
      Sets an ORDER BY clause for the DQL statement.
      Query<T> orWhere​(com.github.collinalpert.lambda2sql.functions.SqlPredicate<T> predicate)
      Sets or appends an OR WHERE clause to the DQL statement.
      java.util.List<T> toList()
      Executes the query and returns the result as a List
      java.util.stream.Stream<T> toStream()
      Executes the query and returns the result as a Stream
      java.lang.String toString()  
      Query<T> where​(com.github.collinalpert.lambda2sql.functions.SqlPredicate<T> predicate)
      Sets or appends a WHERE clause for the DQL statement.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
    • Constructor Detail

      • Query

        public Query​(java.lang.Class<T> type,
                     Mapper<T> mapper)
        Constructor for creating a DQL statement for a given entity. This constructor should not be used directly, but through the DQL methods defined in the BaseService.
        Parameters:
        type - The entity to query.
        mapper - The mapper for mapping entities.
    • Method Detail

      • getFirst

        public java.util.Optional<T> getFirst()
        Gets the first row of a query.
        Returns:
        The first row as an entity wrapped in an Optional if there is at least one row. Otherwise Optional.empty() is returned.
      • toList

        public java.util.List<T> toList()
        Executes the query and returns the result as a List
        Returns:
        A list of entities representing the result rows.
      • toStream

        public java.util.stream.Stream<T> toStream()
        Executes the query and returns the result as a Stream
        Returns:
        A list of entities representing the result rows.
      • where

        public Query<T> where​(com.github.collinalpert.lambda2sql.functions.SqlPredicate<T> predicate)
        Sets or appends a WHERE clause for the DQL statement.
        Parameters:
        predicate - The predicate describing the WHERE clause.
        Returns:
        This Query object, now with an (appended) WHERE clause.
      • orWhere

        public Query<T> orWhere​(com.github.collinalpert.lambda2sql.functions.SqlPredicate<T> predicate)
        Sets or appends an OR WHERE clause to the DQL statement.
        Parameters:
        predicate - The predicate describing the OR WHERE clause.
        Returns:
        This Query object, now with an (appended) OR WHERE clause.
      • orderBy

        public Query<T> orderBy​(com.github.collinalpert.lambda2sql.functions.SqlFunction<T,​?> function)
        Sets an ORDER BY clause for the DQL statement. The order will be ascending.
        Parameters:
        function - The property to order by.
        Returns:
        This Query object, now with an ORDER BY clause.
      • orderBy

        public Query<T> orderBy​(com.github.collinalpert.lambda2sql.functions.SqlFunction<T,​?> function,
                                OrderTypes type)
        Sets an ORDER BY clause for the DQL statement.
        Parameters:
        function - The property to order by.
        type - The type of ordering that should be applied.
        Returns:
        This Query object, now with an ORDER BY clause.
      • limit

        public Query<T> limit​(int limit,
                              int offset)
        Limits the result of the rows returned to a maximum of the passed integer with an offset. For example, the call .limit(10, 5) would return the rows 6-15.
        Parameters:
        limit - The maximum of rows to be returned.
        offset - The offset of the limit.
        Returns:
        This Query object, now with a LIMIT with an OFFSET.
      • limit

        public Query<T> limit​(int limit)
        Limits the result of the rows returned to a maximum of the passed integer.
        Parameters:
        limit - The maximum of rows to be returned.
        Returns:
        This Query object, now with a LIMIT.
      • getQuery

        public java.lang.String getQuery()
        Returns:
        the query as a String
      • toString

        public java.lang.String toString()
        Overrides:
        toString in class java.lang.Object