public class SQLServer2005Dialect extends CTPSQLServerDialect
主要使用数据库 ROW_NUMBER()分页算法重构原来低效的TOP N算法
数据量越大、分页页码越大对分页效率影响就越大
| 限定符和类型 | 字段和说明 |
|---|---|
protected static java.lang.String |
DISTINCT |
protected static java.lang.String |
FROM |
protected static org.apache.commons.logging.Log |
LOGGER |
protected static java.lang.String |
ORDER_BY |
protected static java.util.regex.Pattern |
ORDER_BY_PATTERN |
protected static java.lang.String |
SELECT |
| 构造器和说明 |
|---|
SQLServer2005Dialect() |
| 限定符和类型 | 方法和说明 |
|---|---|
java.lang.String |
applyLocksToSql(java.lang.String arg0,
java.util.Map arg1,
java.util.Map arg2) |
boolean |
bindLimitParametersFirst() |
int |
convertToFirstRowValue(int zeroBasedFirstResult) |
protected static void |
doWithRowNumber(java.lang.StringBuilder pagingSelect,
java.lang.CharSequence orderByClause)
使用ROW_NUMBER() 函数处理分页查询
ROW_NUMBER() OVER (ORDER BY CURRENT_TIMESTAMP)
|
boolean |
dropTemporaryTableAfterUse() |
protected static int |
findIndexOfPattern(java.lang.String querySelect,
java.util.regex.Pattern pattern,
int fromIndex) |
java.lang.String |
generateTemporaryTableName(java.lang.String arg0) |
java.lang.String |
getAddColumnString() |
java.lang.String |
getForUpdateString() |
java.lang.String |
getIdentityColumnString() |
java.lang.String |
getIdentitySelectString() |
java.lang.String |
getLimitString(java.lang.String querySelect,
boolean hasOffset) |
java.lang.String |
getLimitString(java.lang.String querySelect,
int offset,
int limit)
使用ROW_NUMBER()分页算法重写分页机制
|
java.lang.String |
getNullColumnString() |
java.sql.ResultSet |
getResultSet(java.sql.CallableStatement arg0) |
protected static java.lang.CharSequence |
getSelectColumnsWithoutAliases(java.lang.StringBuilder pagingSelect)
返回select语句中的列名
|
boolean |
isCurrentTimestampSelectStringCallable() |
boolean |
qualifyIndexName() |
int |
registerResultSetOutParameter(java.sql.CallableStatement arg0,
int arg1) |
protected static java.lang.String |
relaceAllColumnsAliases(java.lang.String str)
去除查询语句中的别名
columnName [[as] alias]
|
protected static void |
replaceDistinctWithGroupBy(java.lang.StringBuilder pagingSelect)
使用group by 替换distinct子句
|
boolean |
supportsCurrentTimestampSelection() |
boolean |
supportsEmptyInList() |
boolean |
supportsExistsInSelect() |
boolean |
supportsIdentityColumns() |
boolean |
supportsInsertSelectIdentity() |
boolean |
supportsLimit() |
boolean |
supportsLimitOffset() |
boolean |
supportsTemporaryTables() |
boolean |
supportsVariableLimit() |
boolean |
useMaxForLimit() |
getModifyColumnString, getTextLimitappendIdentitySelectToInsert, appendLockHint, areStringComparisonsCaseInsensitive, closeQuote, doesReadCommittedCauseWritersToBlockReaders, doesRepeatableReadCauseReadersToBlockWriters, getCurrentTimestampSelectString, getNoColumnsInsertString, getSelectGUIDString, openQuote, supportsCircularCascadeDeleteConstraints, supportsLobValueChangePropogation, supportsResultSetPositionQueryMethodsOnForwardOnlyCursorbindLimitParametersInReverseOrder, buildSQLExceptionConverter, createCaseFragment, createOuterJoinFragment, dropConstraints, forceLimitUsage, forUpdateOfColumns, getAddForeignKeyConstraintString, getAddPrimaryKeyConstraintString, getCascadeConstraintsString, getCastTypeName, getColumnComment, getCreateMultisetTableString, getCreateSequenceString, getCreateSequenceString, getCreateSequenceStrings, getCreateSequenceStrings, getCreateTableString, getCreateTemporaryTablePostfix, getCreateTemporaryTableString, getCurrentTimestampSQLFunctionName, getDefaultProperties, getDialect, getDialect, getDropForeignKeyString, getDropSequenceString, getDropSequenceStrings, getForUpdateNowaitString, getForUpdateNowaitString, getForUpdateString, getForUpdateString, getFunctions, getHibernateTypeName, getHibernateTypeName, getIdentityColumnString, getIdentityInsertString, getIdentitySelectString, getKeywords, getLockingStrategy, getLowercaseFunction, getMaxAliasLength, getNativeIdentifierGeneratorClass, getQuerySequencesString, getSelectClauseNullString, getSelectSequenceNextValString, getSequenceNextValString, getTableComment, getTableTypeString, getTypeName, getTypeName, getViolatedConstraintNameExtracter, hasAlterTable, hasDataTypeInIdentityColumn, hasSelfReferentialForeignKeyBug, performTemporaryTableDDLInIsolation, quote, registerColumnType, registerColumnType, registerFunction, registerHibernateType, registerHibernateType, registerKeyword, requiresCastingOfParametersInSelectClause, supportsBindAsCallableArgument, supportsCascadeDelete, supportsColumnCheck, supportsCommentOn, supportsExpectedLobUsagePattern, supportsIfExistsAfterTableName, supportsIfExistsBeforeTableName, supportsNotNullUnique, supportsOuterJoinForUpdate, supportsParametersInInsertSelect, supportsPooledSequences, supportsRowValueConstructorSyntax, supportsRowValueConstructorSyntaxInInList, supportsSequences, supportsSubqueryOnMutatingTable, supportsSubselectAsInPredicateLHS, supportsTableCheck, supportsUnboundedLobLocatorMaterialization, supportsUnionAll, supportsUnique, supportsUniqueConstraintInCreateAlterTable, toBooleanValueString, toString, transformSelectString, useInputStreamToInsertBlobprotected static final org.apache.commons.logging.Log LOGGER
protected static final java.lang.String SELECT
protected static final java.lang.String FROM
protected static final java.lang.String DISTINCT
protected static final java.lang.String ORDER_BY
protected static final java.util.regex.Pattern ORDER_BY_PATTERN
public java.lang.String getLimitString(java.lang.String querySelect,
int offset,
int limit)
getLimitString 在类中 org.hibernate.dialect.SQLServerDialectquerySelect - offset - limit - public java.lang.String getLimitString(java.lang.String querySelect,
boolean hasOffset)
getLimitString 在类中 org.hibernate.dialect.Dialectprotected static void doWithRowNumber(java.lang.StringBuilder pagingSelect,
java.lang.CharSequence orderByClause)
ROW_NUMBER() OVER (ORDER BY CURRENT_TIMESTAMP)
pagingSelect - orderByClause - order by 子句protected static void replaceDistinctWithGroupBy(java.lang.StringBuilder pagingSelect)
pagingSelect - sql查询语句protected static java.lang.CharSequence getSelectColumnsWithoutAliases(java.lang.StringBuilder pagingSelect)
pagingSelect - protected static java.lang.String relaceAllColumnsAliases(java.lang.String str)
columnName [[as] alias]
str - protected static int findIndexOfPattern(java.lang.String querySelect,
java.util.regex.Pattern pattern,
int fromIndex)
public int convertToFirstRowValue(int zeroBasedFirstResult)
convertToFirstRowValue 在类中 org.hibernate.dialect.Dialectpublic boolean supportsLimit()
supportsLimit 在类中 org.hibernate.dialect.SQLServerDialectpublic boolean supportsLimitOffset()
supportsLimitOffset 在类中 org.hibernate.dialect.SQLServerDialectpublic boolean supportsVariableLimit()
supportsVariableLimit 在类中 org.hibernate.dialect.SQLServerDialectpublic boolean bindLimitParametersFirst()
bindLimitParametersFirst 在类中 org.hibernate.dialect.Dialectpublic boolean useMaxForLimit()
useMaxForLimit 在类中 org.hibernate.dialect.SQLServerDialectpublic java.lang.String getAddColumnString()
getAddColumnString 在类中 org.hibernate.dialect.Dialectpublic java.lang.String getNullColumnString()
getNullColumnString 在类中 org.hibernate.dialect.Dialectpublic boolean qualifyIndexName()
qualifyIndexName 在类中 org.hibernate.dialect.Dialectpublic java.lang.String getForUpdateString()
getForUpdateString 在类中 org.hibernate.dialect.Dialectpublic boolean supportsIdentityColumns()
supportsIdentityColumns 在类中 org.hibernate.dialect.Dialectpublic java.lang.String getIdentitySelectString()
getIdentitySelectString 在类中 org.hibernate.dialect.Dialectpublic java.lang.String getIdentityColumnString()
getIdentityColumnString 在类中 org.hibernate.dialect.Dialectpublic boolean supportsInsertSelectIdentity()
supportsInsertSelectIdentity 在类中 org.hibernate.dialect.Dialectpublic java.lang.String applyLocksToSql(java.lang.String arg0,
java.util.Map arg1,
java.util.Map arg2)
applyLocksToSql 在类中 org.hibernate.dialect.Dialectpublic int registerResultSetOutParameter(java.sql.CallableStatement arg0,
int arg1)
throws java.sql.SQLException
registerResultSetOutParameter 在类中 org.hibernate.dialect.Dialectjava.sql.SQLExceptionpublic java.sql.ResultSet getResultSet(java.sql.CallableStatement arg0)
throws java.sql.SQLException
getResultSet 在类中 org.hibernate.dialect.Dialectjava.sql.SQLExceptionpublic boolean supportsCurrentTimestampSelection()
supportsCurrentTimestampSelection 在类中 org.hibernate.dialect.Dialectpublic boolean isCurrentTimestampSelectStringCallable()
isCurrentTimestampSelectStringCallable 在类中 org.hibernate.dialect.Dialectpublic boolean supportsTemporaryTables()
supportsTemporaryTables 在类中 org.hibernate.dialect.Dialectpublic java.lang.String generateTemporaryTableName(java.lang.String arg0)
generateTemporaryTableName 在类中 org.hibernate.dialect.Dialectpublic boolean dropTemporaryTableAfterUse()
dropTemporaryTableAfterUse 在类中 org.hibernate.dialect.Dialectpublic boolean supportsEmptyInList()
supportsEmptyInList 在类中 org.hibernate.dialect.Dialectpublic boolean supportsExistsInSelect()
supportsExistsInSelect 在类中 org.hibernate.dialect.Dialect