Class JdbcUtils


  • public class JdbcUtils
    extends java.lang.Object
    A collection of super helpful JDBC utility methods with SQL injection attack defense built in.
    • Nested Class Summary

      Nested Classes 
      Modifier and Type Class Description
      static interface  JdbcUtils.SqlListener  
    • Constructor Summary

      Constructors 
      Constructor Description
      JdbcUtils()  
    • Method Summary

      All Methods Static Methods Concrete Methods 
      Modifier and Type Method Description
      static void addSqlListener​(JdbcUtils.SqlListener listener)  
      static java.lang.String buildInsertSQL​(java.sql.Connection conn, java.lang.String tableName, java.lang.Object[] columnNameArray)  
      static java.lang.String buildUpdateSQL​(java.sql.Connection conn, java.lang.String tableName, java.lang.Object[] setColumnNameArray, java.lang.Object[] whereColumnNames)  
      static java.lang.String check​(java.lang.Object sql)  
      static void close​(java.lang.Object... toClose)  
      static char colQuote​(java.sql.Connection conn)  
      static <T> T convert​(java.lang.Object value, java.lang.Class<T> type)  
      static java.lang.Object execute​(java.sql.Connection conn, java.lang.String sql, java.lang.Object... vals)  
      static java.lang.String getColumnStr​(java.sql.Connection conn, java.lang.Object[] columnNameArray)  
      static java.lang.String getColumnStr​(java.sql.Connection conn, java.util.List columnNameArray)  
      static java.lang.String getDbType​(java.sql.Connection conn)  
      static java.util.List<java.lang.reflect.Field> getFields​(java.lang.Class clazz)  
      static java.lang.String getQuestionMarkStr​(int numQMarks)  
      static java.lang.String getQuestionMarkStr​(java.lang.Object[] columnNameArray)  
      static java.lang.String getWhereColumnStr​(java.sql.Connection conn, java.lang.Object[] columnNameArray, java.lang.String sep)  
      static java.lang.Object insertMap​(java.sql.Connection conn, java.lang.String tableName, java.util.Map row)  
      static java.util.List insertMaps​(java.sql.Connection conn, java.lang.String tableName, java.util.List maps)  
      static boolean isInsert​(java.lang.String sql)  
      static boolean isSelect​(java.lang.String sql)  
      static boolean isUpdate​(java.lang.String sql)  
      static void notifyAfter​(java.lang.String method, java.lang.String sql, java.lang.Object args, java.lang.Exception ex, java.lang.Object result)  
      static void notifyBefore​(java.lang.String method, java.lang.String sql, java.lang.Object args)  
      static void notifyError​(java.lang.String method, java.lang.String sql, java.lang.Object args, java.lang.Exception ex)  
      static java.lang.Object poplulate​(java.lang.Object o, java.util.Map<java.lang.String,​java.lang.Object> row)  
      static java.lang.String quoteCol​(java.sql.Connection conn, java.lang.Object str)  
      static java.util.List<java.lang.String> readSql​(java.io.InputStream ddlStream)
      Breaks the input stream up into a list of sql statements where statements are terminated by ";".
      static java.util.List<java.lang.String> readSql​(java.lang.String string)  
      static void removeSqlListener​(JdbcUtils.SqlListener listener)  
      static void runSql​(java.sql.Connection conn, java.io.InputStream ddlStream)  
      static void runSql​(java.sql.Connection conn, java.lang.String sqlString)  
      static void runSql​(java.sql.Connection con, java.lang.String[] sql)  
      static void runSql​(java.sql.Connection con, java.util.List<java.lang.String> sql)  
      static long selectLong​(java.sql.Connection conn, java.lang.String sql, java.lang.Object... vals)  
      static <T> T selectObject​(java.sql.Connection conn, java.lang.String sql, java.lang.Class<T> clazz, java.lang.Object... vals)  
      static <T> T selectObject​(java.sql.Connection conn, java.lang.String sql, T o, java.lang.Object... vals)  
      static java.util.List selectObjects​(java.sql.Connection conn, java.lang.String sql, java.lang.Class type, java.lang.Object... vals)  
      static Rows.Row selectRow​(java.sql.Connection conn, java.lang.String sql, java.lang.Object... vals)  
      static Rows selectRows​(java.sql.Connection conn, java.lang.String sql, java.lang.Object... vals)  
      static java.lang.Object selectValue​(java.sql.Connection conn, java.lang.String sql, java.lang.Object... vals)  
      static java.util.List<java.lang.Integer> update​(java.sql.Connection conn, java.lang.String tableName, java.util.List<java.lang.String> primaryKeyCols, java.util.List<java.util.Map<java.lang.String,​java.lang.Object>> rows)  
      static java.util.List<java.lang.Integer> updateBatch​(java.sql.Connection conn, java.lang.String tableName, java.util.List<java.lang.String> keyCols, java.util.List<java.util.Map<java.lang.String,​java.lang.Object>> rows)  
      static java.util.List<Rows.Row> upsert​(java.sql.Connection conn, java.lang.String tableName, java.util.List<java.lang.String> primaryKeyCols, java.util.List<java.util.Map<java.lang.String,​java.lang.Object>> rows)
      Batches rows into groups containing identical keys and then inserts rows that are missing indexCols key values or attempts an upsert for rows that have the key values...the row could have the key but still not exist in the db in cases where the key is not an autoincrement number.
      • Methods inherited from class java.lang.Object

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

      • JdbcUtils

        public JdbcUtils()
    • Method Detail

      • getDbType

        public static java.lang.String getDbType​(java.sql.Connection conn)
      • colQuote

        public static char colQuote​(java.sql.Connection conn)
      • quoteCol

        public static java.lang.String quoteCol​(java.sql.Connection conn,
                                                java.lang.Object str)
      • notifyBefore

        public static void notifyBefore​(java.lang.String method,
                                        java.lang.String sql,
                                        java.lang.Object args)
      • notifyError

        public static void notifyError​(java.lang.String method,
                                       java.lang.String sql,
                                       java.lang.Object args,
                                       java.lang.Exception ex)
      • notifyAfter

        public static void notifyAfter​(java.lang.String method,
                                       java.lang.String sql,
                                       java.lang.Object args,
                                       java.lang.Exception ex,
                                       java.lang.Object result)
      • execute

        public static java.lang.Object execute​(java.sql.Connection conn,
                                               java.lang.String sql,
                                               java.lang.Object... vals)
                                        throws java.sql.SQLException
        Throws:
        java.sql.SQLException
      • isSelect

        public static boolean isSelect​(java.lang.String sql)
      • selectObject

        public static <T> T selectObject​(java.sql.Connection conn,
                                         java.lang.String sql,
                                         java.lang.Class<T> clazz,
                                         java.lang.Object... vals)
                                  throws java.lang.Exception
        Throws:
        java.lang.Exception
      • selectObject

        public static <T> T selectObject​(java.sql.Connection conn,
                                         java.lang.String sql,
                                         T o,
                                         java.lang.Object... vals)
                                  throws java.lang.Exception
        Throws:
        java.lang.Exception
      • selectObjects

        public static java.util.List selectObjects​(java.sql.Connection conn,
                                                   java.lang.String sql,
                                                   java.lang.Class type,
                                                   java.lang.Object... vals)
                                            throws java.lang.Exception
        Throws:
        java.lang.Exception
      • poplulate

        public static java.lang.Object poplulate​(java.lang.Object o,
                                                 java.util.Map<java.lang.String,​java.lang.Object> row)
      • getFields

        public static java.util.List<java.lang.reflect.Field> getFields​(java.lang.Class clazz)
      • convert

        public static <T> T convert​(java.lang.Object value,
                                    java.lang.Class<T> type)
      • selectRows

        public static Rows selectRows​(java.sql.Connection conn,
                                      java.lang.String sql,
                                      java.lang.Object... vals)
                               throws java.sql.SQLException
        Throws:
        java.sql.SQLException
      • selectRow

        public static Rows.Row selectRow​(java.sql.Connection conn,
                                         java.lang.String sql,
                                         java.lang.Object... vals)
                                  throws java.sql.SQLException
        Throws:
        java.sql.SQLException
      • selectLong

        public static long selectLong​(java.sql.Connection conn,
                                      java.lang.String sql,
                                      java.lang.Object... vals)
                               throws java.sql.SQLException
        Throws:
        java.sql.SQLException
      • selectValue

        public static java.lang.Object selectValue​(java.sql.Connection conn,
                                                   java.lang.String sql,
                                                   java.lang.Object... vals)
                                            throws java.sql.SQLException
        Throws:
        java.sql.SQLException
      • isInsert

        public static boolean isInsert​(java.lang.String sql)
      • buildInsertSQL

        public static java.lang.String buildInsertSQL​(java.sql.Connection conn,
                                                      java.lang.String tableName,
                                                      java.lang.Object[] columnNameArray)
      • insertMap

        public static java.lang.Object insertMap​(java.sql.Connection conn,
                                                 java.lang.String tableName,
                                                 java.util.Map row)
                                          throws java.sql.SQLException
        Throws:
        java.sql.SQLException
      • insertMaps

        public static java.util.List insertMaps​(java.sql.Connection conn,
                                                java.lang.String tableName,
                                                java.util.List maps)
                                         throws java.sql.SQLException
        Throws:
        java.sql.SQLException
      • isUpdate

        public static boolean isUpdate​(java.lang.String sql)
      • update

        public static java.util.List<java.lang.Integer> update​(java.sql.Connection conn,
                                                               java.lang.String tableName,
                                                               java.util.List<java.lang.String> primaryKeyCols,
                                                               java.util.List<java.util.Map<java.lang.String,​java.lang.Object>> rows)
                                                        throws java.lang.Exception
        Throws:
        java.lang.Exception
      • updateBatch

        public static java.util.List<java.lang.Integer> updateBatch​(java.sql.Connection conn,
                                                                    java.lang.String tableName,
                                                                    java.util.List<java.lang.String> keyCols,
                                                                    java.util.List<java.util.Map<java.lang.String,​java.lang.Object>> rows)
                                                             throws java.sql.SQLException
        Throws:
        java.sql.SQLException
      • buildUpdateSQL

        public static java.lang.String buildUpdateSQL​(java.sql.Connection conn,
                                                      java.lang.String tableName,
                                                      java.lang.Object[] setColumnNameArray,
                                                      java.lang.Object[] whereColumnNames)
      • upsert

        public static java.util.List<Rows.Row> upsert​(java.sql.Connection conn,
                                                      java.lang.String tableName,
                                                      java.util.List<java.lang.String> primaryKeyCols,
                                                      java.util.List<java.util.Map<java.lang.String,​java.lang.Object>> rows)
                                               throws java.sql.SQLException
        Batches rows into groups containing identical keys and then inserts rows that are missing indexCols key values or attempts an upsert for rows that have the key values...the row could have the key but still not exist in the db in cases where the key is not an autoincrement number.
        Parameters:
        conn - the jdbc connection
        tableName - the table to upsert into
        primaryKeyCols - a unique key for the table that will constrain the upsert
        rows - the data to upsert
        Returns:
        the primaryKeyCols values for all rows upserted
        Throws:
        java.sql.SQLException - when the upsert fails
      • runSql

        public static void runSql​(java.sql.Connection conn,
                                  java.lang.String sqlString)
                           throws java.sql.SQLException
        Throws:
        java.sql.SQLException
      • runSql

        public static void runSql​(java.sql.Connection conn,
                                  java.io.InputStream ddlStream)
                           throws java.sql.SQLException
        Throws:
        java.sql.SQLException
      • readSql

        public static java.util.List<java.lang.String> readSql​(java.lang.String string)
                                                        throws java.sql.SQLException
        Throws:
        java.sql.SQLException
      • readSql

        public static java.util.List<java.lang.String> readSql​(java.io.InputStream ddlStream)
                                                        throws java.sql.SQLException
        Breaks the input stream up into a list of sql statements where statements are terminated by ";". Lines starting with "--" or "#" are considred comments are are ignored.
        Parameters:
        ddlStream - a stream of ddl text
        Returns:
        the text broken into individual sql statements
        Throws:
        java.sql.SQLException - when io fails
      • runSql

        public static void runSql​(java.sql.Connection con,
                                  java.util.List<java.lang.String> sql)
                           throws java.sql.SQLException
        Throws:
        java.sql.SQLException
      • runSql

        public static void runSql​(java.sql.Connection con,
                                  java.lang.String[] sql)
                           throws java.sql.SQLException
        Throws:
        java.sql.SQLException
      • getWhereColumnStr

        public static java.lang.String getWhereColumnStr​(java.sql.Connection conn,
                                                         java.lang.Object[] columnNameArray,
                                                         java.lang.String sep)
      • getColumnStr

        public static java.lang.String getColumnStr​(java.sql.Connection conn,
                                                    java.lang.Object[] columnNameArray)
      • getColumnStr

        public static java.lang.String getColumnStr​(java.sql.Connection conn,
                                                    java.util.List columnNameArray)
      • getQuestionMarkStr

        public static java.lang.String getQuestionMarkStr​(java.lang.Object[] columnNameArray)
      • getQuestionMarkStr

        public static java.lang.String getQuestionMarkStr​(int numQMarks)
      • check

        public static java.lang.String check​(java.lang.Object sql)
      • close

        public static void close​(java.lang.Object... toClose)