|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
java.lang.Objectcom.j256.ormlite.db.BaseDatabaseType
public abstract class BaseDatabaseType
Base class for all of the DatabaseType classes that provide the per-database type functionality to create
tables and build queries.
Here's a good page which shows some of the differences between SQL versions.
| Nested Class Summary | |
|---|---|
protected static class |
BaseDatabaseType.BooleanNumberFieldConverter
Conversion to/from the Boolean Java field as a number because some databases like the true/false. |
| Field Summary | |
|---|---|
protected static String |
DEFAULT_SEQUENCE_SUFFIX
|
protected Driver |
driver
|
| Constructor Summary | |
|---|---|
BaseDatabaseType()
|
|
| Method Summary | |
|---|---|
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. |
protected void |
appendBooleanType(StringBuilder sb,
int fieldWidth)
Output the SQL type for a Java boolean. |
protected void |
appendByteArrayType(StringBuilder sb,
int fieldWidth)
Output the SQL type for either a serialized Java object or a byte[]. |
protected void |
appendByteType(StringBuilder sb,
int fieldWidth)
Output the SQL type for a Java byte. |
protected void |
appendCharType(StringBuilder sb,
int fieldWidth)
Output the SQL type for a Java char. |
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 |
appendCreateTableSuffix(StringBuilder sb)
Append the SQL necessary to properly finish a CREATE TABLE line. |
protected void |
appendDateType(StringBuilder sb,
int fieldWidth)
Output the SQL type for a Java Date. |
void |
appendEscapedEntityName(StringBuilder sb,
String name)
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 |
appendLimitValue(StringBuilder sb,
long limit,
Long offset)
Append to the string builder the necessary SQL to limit the results to a certain number. |
protected void |
appendLongStringType(StringBuilder sb,
int fieldWidth)
Output the SQL type for a Java Long String. |
protected void |
appendLongType(StringBuilder sb,
int fieldWidth)
Output the SQL type for a Java long. |
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. |
protected void |
appendSerializableType(StringBuilder sb,
int fieldWidth)
Output the SQL type for a serialized Java object. |
protected void |
appendShortType(StringBuilder sb,
int fieldWidth)
Output the SQL type for a Java short. |
protected void |
appendStringType(StringBuilder sb,
int fieldWidth)
Output the SQL type for a Java String. |
protected void |
configureGeneratedId(String tableName,
StringBuilder sb,
FieldType fieldType,
List<String> statementsBefore,
List<String> statementsAfter,
List<String> additionalArgs,
List<String> queriesAfter)
Output the SQL necessary to configure a generated-id column. |
protected void |
configureGeneratedIdSequence(StringBuilder sb,
FieldType fieldType,
List<String> statementsBefore,
List<String> additionalArgs,
List<String> queriesAfter)
Output the SQL necessary to configure a generated-id column. |
protected void |
configureId(StringBuilder sb,
FieldType fieldType,
List<String> statementsBefore,
List<String> additionalArgs,
List<String> queriesAfter)
Output the SQL necessary to configure an id column. |
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 |
protected boolean |
generatedIdSqlAtEnd()
Return true if we should add generated-id SQL in the addPrimaryKeySql(com.j256.ormlite.field.FieldType[], java.util.List method at the end. |
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. |
protected abstract String |
getDriverClassName()
Return the name of the driver class associated with this database type. |
FieldConverter |
getFieldConverter(DataPersister dataPersister)
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 |
isCreateTableReturnsZero()
Returns true if a 'CREATE TABLE' statement should return 0. |
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 |
isLimitAfterSelect()
Return true if the LIMIT should be called after SELECT otherwise at the end of the WHERE (the default). |
boolean |
isLimitSqlSupported()
Return true if the database supports the LIMIT SQL command. |
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 |
isTruncateSupported()
Returns true if the table truncate operation is supported. |
boolean |
isVarcharFieldWidthSupported()
Return true if the database supports the width parameter on VARCHAR fields. |
void |
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. |
| Methods inherited from class java.lang.Object |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Methods inherited from interface com.j256.ormlite.db.DatabaseType |
|---|
getDatabaseName, isDatabaseUrlThisType |
| Field Detail |
|---|
protected static String DEFAULT_SEQUENCE_SUFFIX
protected Driver driver
| Constructor Detail |
|---|
public BaseDatabaseType()
| Method Detail |
|---|
protected abstract String getDriverClassName()
public void loadDriver()
throws SQLException
DatabaseType
loadDriver in interface DatabaseTypeSQLException - If the driver class is not available in the classpath.public void setDriver(Driver driver)
DatabaseType
setDriver in interface DatabaseType
public void appendColumnArg(String tableName,
StringBuilder sb,
FieldType fieldType,
List<String> additionalArgs,
List<String> statementsBefore,
List<String> statementsAfter,
List<String> queriesAfter)
throws SQLException
DatabaseTypeFieldType 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.
appendColumnArg in interface DatabaseTypeSQLException
protected void appendStringType(StringBuilder sb,
int fieldWidth)
protected void appendLongStringType(StringBuilder sb,
int fieldWidth)
protected void appendDateType(StringBuilder sb,
int fieldWidth)
protected void appendBooleanType(StringBuilder sb,
int fieldWidth)
protected void appendCharType(StringBuilder sb,
int fieldWidth)
protected void appendByteType(StringBuilder sb,
int fieldWidth)
protected void appendShortType(StringBuilder sb,
int fieldWidth)
protected void appendLongType(StringBuilder sb,
int fieldWidth)
protected void appendByteArrayType(StringBuilder sb,
int fieldWidth)
protected void appendSerializableType(StringBuilder sb,
int fieldWidth)
protected void configureGeneratedIdSequence(StringBuilder sb,
FieldType fieldType,
List<String> statementsBefore,
List<String> additionalArgs,
List<String> queriesAfter)
throws SQLException
SQLException
protected void configureGeneratedId(String tableName,
StringBuilder sb,
FieldType fieldType,
List<String> statementsBefore,
List<String> statementsAfter,
List<String> additionalArgs,
List<String> queriesAfter)
protected void configureId(StringBuilder sb,
FieldType fieldType,
List<String> statementsBefore,
List<String> additionalArgs,
List<String> queriesAfter)
public void addPrimaryKeySql(FieldType[] fieldTypes,
List<String> additionalArgs,
List<String> statementsBefore,
List<String> statementsAfter,
List<String> queriesAfter)
throws SQLException
DatabaseType
addPrimaryKeySql in interface DatabaseTypeSQLExceptionprotected boolean generatedIdSqlAtEnd()
addPrimaryKeySql(com.j256.ormlite.field.FieldType[], java.util.List, java.util.List, java.util.List, java.util.List) method at the end. If false then
it needs to be done by hand inline.
public void addUniqueComboSql(FieldType[] fieldTypes,
List<String> additionalArgs,
List<String> statementsBefore,
List<String> statementsAfter,
List<String> queriesAfter)
throws SQLException
DatabaseType
addUniqueComboSql in interface DatabaseTypeSQLException
public void dropColumnArg(FieldType fieldType,
List<String> statementsBefore,
List<String> statementsAfter)
DatabaseTypeFieldType 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
dropColumnArg in interface DatabaseType
public void appendEscapedWord(StringBuilder sb,
String word)
DatabaseType
appendEscapedWord in interface DatabaseType
public void appendEscapedEntityName(StringBuilder sb,
String name)
DatabaseType
appendEscapedEntityName in interface DatabaseType
public String generateIdSequenceName(String tableName,
FieldType idFieldType)
DatabaseType
generateIdSequenceName in interface DatabaseTypepublic String getCommentLinePrefix()
DatabaseType
getCommentLinePrefix in interface DatabaseTypepublic FieldConverter getFieldConverter(DataPersister dataPersister)
DatabaseType
getFieldConverter in interface DatabaseTypepublic boolean isIdSequenceNeeded()
DatabaseType
isIdSequenceNeeded in interface DatabaseTypepublic boolean isVarcharFieldWidthSupported()
DatabaseType
isVarcharFieldWidthSupported in interface DatabaseTypepublic boolean isLimitSqlSupported()
DatabaseTypeStatement.setMaxRows(int) instead. See prepareSqlStatement in MappedPreparedQuery.
isLimitSqlSupported in interface DatabaseTypepublic boolean isOffsetSqlSupported()
DatabaseType
isOffsetSqlSupported in interface DatabaseTypepublic boolean isOffsetLimitArgument()
DatabaseType
isOffsetLimitArgument in interface DatabaseTypepublic boolean isLimitAfterSelect()
DatabaseType
isLimitAfterSelect in interface DatabaseType
public void appendLimitValue(StringBuilder sb,
long limit,
Long offset)
DatabaseType
appendLimitValue in interface DatabaseType
public void appendOffsetValue(StringBuilder sb,
long offset)
DatabaseType
appendOffsetValue in interface DatabaseType
public void appendSelectNextValFromSequence(StringBuilder sb,
String sequenceName)
DatabaseTypeDatabaseType.isIdSequenceNeeded() is true.
appendSelectNextValFromSequence in interface DatabaseTypepublic void appendCreateTableSuffix(StringBuilder sb)
DatabaseType
appendCreateTableSuffix in interface DatabaseTypepublic boolean isCreateTableReturnsZero()
DatabaseType
isCreateTableReturnsZero in interface DatabaseTypepublic boolean isEntityNamesMustBeUpCase()
DatabaseTypeTurns 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.
isEntityNamesMustBeUpCase in interface DatabaseTypepublic boolean isNestedSavePointsSupported()
DatabaseType
isNestedSavePointsSupported in interface DatabaseTypepublic String getPingStatement()
DatabaseType
getPingStatement in interface DatabaseTypepublic boolean isBatchUseTransaction()
DatabaseType
isBatchUseTransaction in interface DatabaseTypepublic boolean isTruncateSupported()
DatabaseType
isTruncateSupported in interface DatabaseTypepublic boolean isCreateIfNotExistsSupported()
DatabaseType
isCreateIfNotExistsSupported in interface DatabaseTypepublic boolean isSelectSequenceBeforeInsert()
DatabaseType
isSelectSequenceBeforeInsert in interface DatabaseTypepublic boolean isAllowGeneratedIdInsertSupported()
DatabaseTypeDatabaseField.allowGeneratedIdInsert() setting which allows people to
insert values into generated-id columns.
isAllowGeneratedIdInsertSupported in interface DatabaseType
|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||