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.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
-
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.
-