Package io.inversion.utils
Class JdbcUtils
- java.lang.Object
-
- io.inversion.utils.JdbcUtils
-
public class JdbcUtils extends java.lang.ObjectA 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 interfaceJdbcUtils.SqlListener
-
Constructor Summary
Constructors Constructor Description JdbcUtils()
-
Method Summary
All Methods Static Methods Concrete Methods Modifier and Type Method Description static voidaddSqlListener(JdbcUtils.SqlListener listener)static java.lang.StringbuildInsertSQL(java.sql.Connection conn, java.lang.String tableName, java.lang.Object[] columnNameArray)static java.lang.StringbuildUpdateSQL(java.sql.Connection conn, java.lang.String tableName, java.lang.Object[] setColumnNameArray, java.lang.Object[] whereColumnNames)static java.lang.Stringcheck(java.lang.Object sql)static voidclose(java.lang.Object... toClose)static charcolQuote(java.sql.Connection conn)static <T> Tconvert(java.lang.Object value, java.lang.Class<T> type)static java.lang.Objectexecute(java.sql.Connection conn, java.lang.String sql, java.lang.Object... vals)static java.lang.StringgetColumnStr(java.sql.Connection conn, java.lang.Object[] columnNameArray)static java.lang.StringgetColumnStr(java.sql.Connection conn, java.util.List columnNameArray)static java.lang.StringgetDbType(java.sql.Connection conn)static java.util.List<java.lang.reflect.Field>getFields(java.lang.Class clazz)static java.lang.StringgetQuestionMarkStr(int numQMarks)static java.lang.StringgetQuestionMarkStr(java.lang.Object[] columnNameArray)static java.lang.StringgetWhereColumnStr(java.sql.Connection conn, java.lang.Object[] columnNameArray, java.lang.String sep)static java.lang.ObjectinsertMap(java.sql.Connection conn, java.lang.String tableName, java.util.Map row)static java.util.ListinsertMaps(java.sql.Connection conn, java.lang.String tableName, java.util.List maps)static booleanisInsert(java.lang.String sql)static booleanisSelect(java.lang.String sql)static booleanisUpdate(java.lang.String sql)static voidnotifyAfter(java.lang.String method, java.lang.String sql, java.lang.Object args, java.lang.Exception ex, java.lang.Object result)static voidnotifyBefore(java.lang.String method, java.lang.String sql, java.lang.Object args)static voidnotifyError(java.lang.String method, java.lang.String sql, java.lang.Object args, java.lang.Exception ex)static java.lang.Objectpoplulate(java.lang.Object o, java.util.Map<java.lang.String,java.lang.Object> row)static java.lang.StringquoteCol(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 voidremoveSqlListener(JdbcUtils.SqlListener listener)static voidrunSql(java.sql.Connection conn, java.io.InputStream ddlStream)static voidrunSql(java.sql.Connection conn, java.lang.String sqlString)static voidrunSql(java.sql.Connection con, java.lang.String[] sql)static voidrunSql(java.sql.Connection con, java.util.List<java.lang.String> sql)static longselectLong(java.sql.Connection conn, java.lang.String sql, java.lang.Object... vals)static <T> TselectObject(java.sql.Connection conn, java.lang.String sql, java.lang.Class<T> clazz, java.lang.Object... vals)static <T> TselectObject(java.sql.Connection conn, java.lang.String sql, T o, java.lang.Object... vals)static java.util.ListselectObjects(java.sql.Connection conn, java.lang.String sql, java.lang.Class type, java.lang.Object... vals)static Rows.RowselectRow(java.sql.Connection conn, java.lang.String sql, java.lang.Object... vals)static RowsselectRows(java.sql.Connection conn, java.lang.String sql, java.lang.Object... vals)static java.lang.ObjectselectValue(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)Batchesrowsinto 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.
-
-
-
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)
-
addSqlListener
public static void addSqlListener(JdbcUtils.SqlListener listener)
-
removeSqlListener
public static void removeSqlListener(JdbcUtils.SqlListener listener)
-
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
Batchesrowsinto 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 connectiontableName- the table to upsert intoprimaryKeyCols- a unique key for the table that will constrain the upsertrows- 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.SQLExceptionBreaks 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)
-
-