Class SqlVisitor

java.lang.Object
com.github.collinalpert.lambda2sql.SqlVisitor
All Implemented Interfaces:
com.github.collinalpert.expressions.expression.ExpressionVisitor<StringBuilder>

public class SqlVisitor
extends Object
implements com.github.collinalpert.expressions.expression.ExpressionVisitor<StringBuilder>
Converts a lambda expression to an SQL where condition.
  • Method Summary

    Modifier and Type Method Description
    StringBuilder visit​(com.github.collinalpert.expressions.expression.BinaryExpression e)
    Converts a binary expression to the SQL equivalent.
    StringBuilder visit​(com.github.collinalpert.expressions.expression.ConstantExpression e)
    Returns a constant used in a lambda expression as the SQL equivalent.
    StringBuilder visit​(com.github.collinalpert.expressions.expression.DelegateExpression e)  
    StringBuilder visit​(com.github.collinalpert.expressions.expression.InvocationExpression e)
    An expression which represents an invocation of a lambda expression.
    StringBuilder visit​(com.github.collinalpert.expressions.expression.LambdaExpression e)
    The entry point for converting lambda expressions.
    StringBuilder visit​(com.github.collinalpert.expressions.expression.MemberExpression e)
    An expression which represents a getter, and thus a field in a database, in the lambda expression.
    StringBuilder visit​(com.github.collinalpert.expressions.expression.ParameterExpression e)
    Represents a parameterized expression, for example if a variable is used in a query.
    StringBuilder visit​(com.github.collinalpert.expressions.expression.UnaryExpression e)
    Converts a unary expression to the SQL equivalent.

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Method Details

    • visit

      public StringBuilder visit​(com.github.collinalpert.expressions.expression.BinaryExpression e)
      Converts a binary expression to the SQL equivalent. For example: person -> person.getId() == 2 becomes: id = 2
      Specified by:
      visit in interface com.github.collinalpert.expressions.expression.ExpressionVisitor<StringBuilder>
      Parameters:
      e - the BinaryExpression to convert
      Returns:
      the StringBuilder containing the where condition.
    • visit

      public StringBuilder visit​(com.github.collinalpert.expressions.expression.ConstantExpression e)
      Returns a constant used in a lambda expression as the SQL equivalent.
      Specified by:
      visit in interface com.github.collinalpert.expressions.expression.ExpressionVisitor<StringBuilder>
      Parameters:
      e - The ConstantExpression to transform.
      Returns:
      A StringBuilder that has this constant appended.
    • visit

      public StringBuilder visit​(com.github.collinalpert.expressions.expression.InvocationExpression e)
      An expression which represents an invocation of a lambda expression. It is the last visit(com.github.collinalpert.expressions.expression.BinaryExpression) where the arguments of ParameterExpressions are available which is why they are temporarily saved in a list to be inserted into the SQL where condition later.
      Specified by:
      visit in interface com.github.collinalpert.expressions.expression.ExpressionVisitor<StringBuilder>
      Parameters:
      e - The InvocationExpression to convert.
      Returns:
      A StringBuilder containing the body/target of the lambda expression.
    • visit

      public StringBuilder visit​(com.github.collinalpert.expressions.expression.LambdaExpression e)
      The entry point for converting lambda expressions.
      Specified by:
      visit in interface com.github.collinalpert.expressions.expression.ExpressionVisitor<StringBuilder>
      Parameters:
      e - The entire lambda expression to convert.
      Returns:
      A StringBuilder containing the body of the lambda expression.
    • visit

      public StringBuilder visit​(com.github.collinalpert.expressions.expression.DelegateExpression e)
      Specified by:
      visit in interface com.github.collinalpert.expressions.expression.ExpressionVisitor<StringBuilder>
    • visit

      public StringBuilder visit​(com.github.collinalpert.expressions.expression.MemberExpression e)
      An expression which represents a getter, and thus a field in a database, in the lambda expression. For example: person -> person.getName(); becomes: name
      Specified by:
      visit in interface com.github.collinalpert.expressions.expression.ExpressionVisitor<StringBuilder>
      Parameters:
      e - The MemberExpression to convert.
      Returns:
      A StringBuilder with the name of the database field appended.
    • visit

      public StringBuilder visit​(com.github.collinalpert.expressions.expression.ParameterExpression e)
      Represents a parameterized expression, for example if a variable is used in a query.
      Specified by:
      visit in interface com.github.collinalpert.expressions.expression.ExpressionVisitor<StringBuilder>
      Parameters:
      e - The parameterized expression.
      Returns:
      The StringBuilder with the SQL equivalent appended.
    • visit

      public StringBuilder visit​(com.github.collinalpert.expressions.expression.UnaryExpression e)
      Converts a unary expression to the SQL equivalent. For example: person -> !person.isActive(); becomes: !isActive
      Specified by:
      visit in interface com.github.collinalpert.expressions.expression.ExpressionVisitor<StringBuilder>
      Parameters:
      e - the UnaryExpression to convert
      Returns:
      A StringBuilder with the unary expression appended.