Class Sql

  • All Implemented Interfaces:
    java.lang.CharSequence

    @Beta
    public final class Sql
    extends java.lang.Object
    implements java.lang.CharSequence

    An immutable sql statement string created from multiple tokens in order to write inline sql statements in an easy-to-read fashion spread out over multiple lines of code.

    The class implements CharSequence and thus can be used as a drop-in alternative wherever API supports CharSequence rather than String.

    Please note that the validity of the statement is never checked, and that null or empty inputs are permitted (no run-time exceptions).
    The input of multiple tokens is formatted into a single String by removing leading and trailing whitespace and concatenating non-empty tokens by a single space character. Further, any trailing semicolons are removed from the resulting sql string.

    Example:

         String tblName = "table";
         Sql.of("SELECT COUNT(*)",
                "FROM", tblName,
                " WHERE cond1 = :cond1",
                "   AND cond2 = :cond2");
     
    • Field Summary

      Fields 
      Modifier and Type Field Description
      private static Sql EMPTY_SQL  
      private java.lang.String str
      The internal sql string.
    • Constructor Summary

      Constructors 
      Modifier Constructor Description
      private Sql​(java.lang.String sql)  
    • Method Summary

      All Methods Static Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      char charAt​(int index)  
      boolean equals​(java.lang.Object obj)  
      (package private) static java.lang.String format​(java.lang.Iterable<? extends java.lang.CharSequence> tokens)
      Formats an sql statement from multiple tokens.
      Leading and trailing whitespace is removed from each token and empty tokens ignored.
      The tokens are joined using a single blank character to create the sql string.
      Finally, any trailing semicolons are removed from the resulting sql.
      int hashCode()  
      int length()  
      static Sql of​(java.lang.CharSequence... tokens)  
      static Sql of​(java.lang.Iterable<? extends java.lang.CharSequence> tokens)  
      java.lang.CharSequence subSequence​(int start, int end)  
      java.lang.String toString()  
      • Methods inherited from class java.lang.Object

        clone, finalize, getClass, notify, notifyAll, wait, wait, wait
      • Methods inherited from interface java.lang.CharSequence

        chars, codePoints
    • Field Detail

      • EMPTY_SQL

        private static final Sql EMPTY_SQL
      • str

        private final java.lang.String str
        The internal sql string. Cannot be null.
    • Constructor Detail

      • Sql

        private Sql​(java.lang.String sql)
    • Method Detail

      • of

        public static Sql of​(java.lang.CharSequence... tokens)
      • of

        public static Sql of​(java.lang.Iterable<? extends java.lang.CharSequence> tokens)
      • format

        static java.lang.String format​(java.lang.Iterable<? extends java.lang.CharSequence> tokens)
        Formats an sql statement from multiple tokens.
        Leading and trailing whitespace is removed from each token and empty tokens ignored.
        The tokens are joined using a single blank character to create the sql string.
        Finally, any trailing semicolons are removed from the resulting sql.
        Parameters:
        tokens - collection of tokens
        Returns:
        formatted sql string
      • length

        public int length()
        Specified by:
        length in interface java.lang.CharSequence
      • charAt

        public char charAt​(int index)
        Specified by:
        charAt in interface java.lang.CharSequence
      • subSequence

        @Nonnull
        public java.lang.CharSequence subSequence​(int start,
                                                  int end)
        Specified by:
        subSequence in interface java.lang.CharSequence
      • hashCode

        public int hashCode()
        Overrides:
        hashCode in class java.lang.Object
      • equals

        public boolean equals​(java.lang.Object obj)
        Overrides:
        equals in class java.lang.Object
      • toString

        public java.lang.String toString()
        Specified by:
        toString in interface java.lang.CharSequence
        Overrides:
        toString in class java.lang.Object