public interface DatabaseType
Modifier and Type | Method and Description |
---|---|
void |
addPrimaryKeySql(FieldType[] fieldTypes,
List<String> additionalArgs,
List<String> statementsBefore,
List<String> statementsAfter,
List<String> queriesAfter)
Appends information about primary key field(s) to the additional-args or other lists.
|
void |
addUniqueComboSql(FieldType[] fieldTypes,
List<String> additionalArgs,
List<String> statementsBefore,
List<String> statementsAfter,
List<String> queriesAfter)
Appends information about unique field(s) to the additional-args or other lists.
|
void |
appendColumnArg(String tableName,
StringBuilder sb,
FieldType fieldType,
List<String> additionalArgs,
List<String> statementsBefore,
List<String> statementsAfter,
List<String> queriesAfter)
Takes a
FieldType and appends the SQL necessary to create the field to the string builder. |
void |
appendCreateSchemaSuffix(StringBuilder sb)
Append the SQL necessary to properly finish a CREATE SCHEMA line.
|
void |
appendCreateTableSuffix(StringBuilder sb)
Append the SQL necessary to properly finish a CREATE TABLE line.
|
void |
appendDeleteLimitValue(StringBuilder sb,
long limit)
Append to the string builder the necessary SQL to limit the deleted rows to a certain number.
|
void |
appendEscapedEntityName(StringBuilder sb,
String word)
Add a entity-name word to the string builder wrapped in the proper characters to escape it.
|
void |
appendEscapedWord(StringBuilder sb,
String word)
Add the word to the string builder wrapped in the proper characters to escape it.
|
void |
appendInsertNoColumns(StringBuilder sb)
Append the SQL necessary to properly finish a "INSERT INTO xxx" line when there are no arguments.
|
void |
appendLimitValue(StringBuilder sb,
long limit,
Long offset)
Append to the string builder the necessary SQL to limit the results to a certain number.
|
void |
appendOffsetValue(StringBuilder sb,
long offset)
Append to the string builder the necessary SQL to start the results at a certain row number.
|
void |
appendSelectNextValFromSequence(StringBuilder sb,
String sequenceName)
Append the SQL necessary to get the next-value from a sequence.
|
void |
appendUpdateLimitValue(StringBuilder sb,
long limit)
Append to the string builder the necessary SQL to limit the updated rows to a certain number.
|
String |
downCaseString(String string,
boolean forceEnglish)
Returns the lowercase version of a string for generating and fields and methods.
|
void |
dropColumnArg(FieldType fieldType,
List<String> statementsBefore,
List<String> statementsAfter)
Takes a
FieldType and adds the necessary statements to the before and after lists necessary so that the
dropping of the table will succeed and will clear other associated sequences or other database artifacts |
<T> DatabaseTableConfig<T> |
extractDatabaseTableConfig(ConnectionSource connectionSource,
Class<T> clazz)
Extract and return a custom database configuration for this class.
|
String |
generateIdSequenceName(String tableName,
FieldType idFieldType)
Return the name of an ID sequence based on the tabelName and the fieldType of the id.
|
String |
getCommentLinePrefix()
Return the prefix to put at the front of a SQL line to mark it as a comment.
|
String |
getDatabaseName()
Return the name of the database for logging purposes.
|
DataPersister |
getDataPersister(DataPersister defaultPersister,
FieldType fieldType)
Return the DataPersister to associate with the DataType.
|
FieldConverter |
getFieldConverter(DataPersister dataType,
FieldType fieldType)
Return the FieldConverter to associate with the DataType.
|
String |
getPingStatement()
Return an statement that doesn't do anything but which can be used to ping the database by sending it over a
database connection.
|
boolean |
isAllowGeneratedIdInsertSupported()
Does the database support the
DatabaseField.allowGeneratedIdInsert() setting which allows people to
insert values into generated-id columns. |
boolean |
isBatchUseTransaction()
Returns true if batch operations should be done inside of a transaction.
|
boolean |
isCreateIfNotExistsSupported()
Returns true if the table creation IF NOT EXISTS syntax is supported.
|
boolean |
isCreateIndexIfNotExistsSupported()
Does the database support the "CREATE INDEX IF NOT EXISTS" SQL construct.
|
boolean |
isCreateSchemaIfNotExistsSupported()
Does the database support the "CREATE SCHEMA IF NOT EXISTS" SQL construct.
|
boolean |
isCreateSchemaReturnsNegative()
Returns true if CREATE and DROP SCHEMA statements can return < 0 and still have worked.
|
boolean |
isCreateSchemaReturnsZero()
Returns true if a 'CREATE SCHEMA' statement should return 0.
|
boolean |
isCreateTableReturnsNegative()
Returns true if CREATE and DROP TABLE statements can return < 0 and still have worked.
|
boolean |
isCreateTableReturnsZero()
Returns true if a 'CREATE TABLE' statement should return 0.
|
boolean |
isDatabaseUrlThisType(String url,
String dbTypePart)
Return true if the database URL corresponds to this database type.
|
boolean |
isEntityNamesMustBeUpCase()
Returns true if table and field names should be made uppercase.
|
boolean |
isIdSequenceNeeded()
Return true if the database needs a sequence when you use generated IDs.
|
boolean |
isLimitAfterDeleteSupported()
Return true if LIMIT is supported after the DELETE command.
|
boolean |
isLimitAfterSelect()
Return true if the LIMIT should be called after SELECT otherwise at the end of the WHERE (the default).
|
boolean |
isLimitAfterUpdateSupported()
Return true if LIMIT is supported after the UPDATE command.
|
boolean |
isLimitDeleteAtEndSupported()
Return true if LIMIT is supported at the end of the DELETE statement.
|
boolean |
isLimitSqlSupported()
Return true if the database supports the LIMIT SQL command.
|
boolean |
isLimitUpdateAtEndSupported()
Return true if LIMIT is supported at the end of the UPDATE statement.
|
boolean |
isNestedSavePointsSupported()
Returns true if nested savePoints are supported, otherwise false.
|
boolean |
isOffsetLimitArgument()
Return true if the database supports the offset as a comma argument from the limit.
|
boolean |
isOffsetSqlSupported()
Return true if the database supports the OFFSET SQL command in some form.
|
boolean |
isSelectSequenceBeforeInsert()
Returns true if we have to select the value of the sequence before we insert a new data row.
|
boolean |
isSequenceNamesMustBeLowerCase()
Returns true if the sequence names need to be lowercased.
|
boolean |
isTruncateSupported()
Returns true if the table truncate operation is supported.
|
boolean |
isVarcharFieldWidthSupported()
Return true if the database supports the width parameter on VARCHAR fields.
|
boolean |
loadDriver()
Load the driver class associated with this database so it can wire itself into JDBC.
|
void |
setDriver(Driver driver)
Set the driver instance on the database type.
|
String |
upCaseEntityName(String entityName)
Returns the uppercase version of an entity name.
|
String |
upCaseString(String string,
boolean forceEnglish)
Returns the uppercase version of a string for generating and matching fields and methods.
|
boolean isDatabaseUrlThisType(String url, String dbTypePart)
boolean loadDriver()
void setDriver(Driver driver)
void appendColumnArg(String tableName, StringBuilder sb, FieldType fieldType, List<String> additionalArgs, List<String> statementsBefore, List<String> statementsAfter, List<String> queriesAfter) throws SQLException
FieldType
and appends the SQL necessary to create the field to the string builder. The field may
also generate additional arguments which go at the end of the insert statement or additional statements to be
executed before or afterwards depending on the configurations. The database can also add to the list of queries
that will be performed afterward to test portions of the config.SQLException
void addPrimaryKeySql(FieldType[] fieldTypes, List<String> additionalArgs, List<String> statementsBefore, List<String> statementsAfter, List<String> queriesAfter) throws SQLException
SQLException
void addUniqueComboSql(FieldType[] fieldTypes, List<String> additionalArgs, List<String> statementsBefore, List<String> statementsAfter, List<String> queriesAfter) throws SQLException
SQLException
void dropColumnArg(FieldType fieldType, List<String> statementsBefore, List<String> statementsAfter)
FieldType
and adds the necessary statements to the before and after lists necessary so that the
dropping of the table will succeed and will clear other associated sequences or other database artifactsvoid appendEscapedEntityName(StringBuilder sb, String word)
void appendEscapedWord(StringBuilder sb, String word)
String generateIdSequenceName(String tableName, FieldType idFieldType)
String getCommentLinePrefix()
boolean isIdSequenceNeeded()
DataPersister getDataPersister(DataPersister defaultPersister, FieldType fieldType)
FieldConverter getFieldConverter(DataPersister dataType, FieldType fieldType)
boolean isVarcharFieldWidthSupported()
boolean isLimitSqlSupported()
Statement.setMaxRows(int)
instead. See prepareSqlStatement in MappedPreparedQuery.boolean isLimitAfterSelect()
boolean isLimitAfterUpdateSupported()
boolean isLimitUpdateAtEndSupported()
boolean isLimitAfterDeleteSupported()
boolean isLimitDeleteAtEndSupported()
void appendLimitValue(StringBuilder sb, long limit, Long offset)
void appendUpdateLimitValue(StringBuilder sb, long limit)
void appendDeleteLimitValue(StringBuilder sb, long limit)
boolean isOffsetSqlSupported()
boolean isOffsetLimitArgument()
void appendOffsetValue(StringBuilder sb, long offset)
void appendSelectNextValFromSequence(StringBuilder sb, String sequenceName)
isIdSequenceNeeded()
is true.void appendCreateTableSuffix(StringBuilder sb)
void appendCreateSchemaSuffix(StringBuilder sb)
boolean isCreateTableReturnsZero()
boolean isCreateSchemaReturnsZero()
boolean isCreateTableReturnsNegative()
boolean isCreateSchemaReturnsNegative()
boolean isEntityNamesMustBeUpCase()
Turns out that Derby and Hsqldb are doing something wrong (IMO) with entity names. If you create a table with the name "footable" (with the quotes) then it will be created as lowercase footable, case sensitive. However, if you then issue the query 'select * from footable' (without quotes) it won't find the table because it gets promoted to be FOOTABLE and is searched in a case sensitive manner. So for these databases, entity names have to be forced to be uppercase so external queries will also work.
String upCaseEntityName(String entityName)
String upCaseString(String string, boolean forceEnglish)
string
- String to up case.forceEnglish
- Set to true to use the English locale otherwise false to use the default local one.String downCaseString(String string, boolean forceEnglish)
string
- String to down case.forceEnglish
- Set to true to use the English locale otherwise false to use the default local one.boolean isNestedSavePointsSupported()
String getPingStatement()
boolean isBatchUseTransaction()
boolean isTruncateSupported()
boolean isCreateIfNotExistsSupported()
boolean isCreateIndexIfNotExistsSupported()
isCreateIfNotExistsSupported()
.boolean isCreateSchemaIfNotExistsSupported()
isCreateIfNotExistsSupported()
.boolean isSelectSequenceBeforeInsert()
boolean isAllowGeneratedIdInsertSupported()
DatabaseField.allowGeneratedIdInsert()
setting which allows people to
insert values into generated-id columns.String getDatabaseName()
<T> DatabaseTableConfig<T> extractDatabaseTableConfig(ConnectionSource connectionSource, Class<T> clazz) throws SQLException
SQLException
void appendInsertNoColumns(StringBuilder sb)
boolean isSequenceNamesMustBeLowerCase()
This documentation is licensed by Gray Watson under the Creative Commons Attribution-Share Alike 3.0 License.