Package scriptella.jdbc
Class SqlParserBase
java.lang.Object
scriptella.jdbc.SqlParserBase
Customizable SQL parser.
Supported extensions
The parser supports extensions described in PropertiesSubstitutor.
Additionally ? prefix is used for expressions which should be injected as prepared statement parameters.
Example:
var=_name
id=11
--------------------------------------
select * FROM table${var} where id=?id
--- is transformed to ---
select * FROM table_name where id=? where statement parameter has value of 11
Notes:
- $ prefixed expressions are substituted in all parts except comments.
- ? prefixed expressions are not substituted inside quotes and comments.
--only ${prop} and ?surname are handled
SELECT * FROM "Table" WHERE NAME="?John${prop}" and SURNAME=?surname;
These extensions are handled by subclasses in handleParameter(String, boolean, boolean) method.- Version:
- 1.0
- Author:
- Fyodor Kupolov
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprotected StringhandleParameter(String name, boolean expression, boolean jdbcParam) Called when parameter is encountered in SQL.protected voidhandleStatement(String sql, int[] injections) voidParses SQL script.voidparse(SqlTokenizer tok) protected voidstatementParsed(String sql) Invoked when SQL statement has been processed and all expressions handled.
-
Constructor Details
-
SqlParserBase
public SqlParserBase()
-
-
Method Details
-
parse
Parses SQL script.- Parameters:
reader- reader with SQL script.
-
parse
-
handleStatement
-
handleParameter
Called when parameter is encountered in SQL.- Parameters:
name- parameter name or expressionexpression- true if specified name is an expression, not a simple property referencejdbcParam- true if parameter value should be passed as prepared statement parameter. Othewise it's value should be inserted into statement text.- Returns:
- substituion string.
-
statementParsed
Invoked when SQL statement has been processed and all expressions handled.- Parameters:
sql- content of the preprocessed statement.
-