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, getTextLimit
appendIdentitySelectToInsert, appendLockHint, areStringComparisonsCaseInsensitive, closeQuote, doesReadCommittedCauseWritersToBlockReaders, doesRepeatableReadCauseReadersToBlockWriters, getCurrentTimestampSelectString, getNoColumnsInsertString, getSelectGUIDString, openQuote, supportsCircularCascadeDeleteConstraints, supportsLobValueChangePropogation, supportsResultSetPositionQueryMethodsOnForwardOnlyCursor
bindLimitParametersInReverseOrder, 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, useInputStreamToInsertBlob
protected 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.SQLServerDialect
querySelect
- offset
- limit
- public java.lang.String getLimitString(java.lang.String querySelect, boolean hasOffset)
getLimitString
在类中 org.hibernate.dialect.Dialect
protected 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.Dialect
public boolean supportsLimit()
supportsLimit
在类中 org.hibernate.dialect.SQLServerDialect
public boolean supportsLimitOffset()
supportsLimitOffset
在类中 org.hibernate.dialect.SQLServerDialect
public boolean supportsVariableLimit()
supportsVariableLimit
在类中 org.hibernate.dialect.SQLServerDialect
public boolean bindLimitParametersFirst()
bindLimitParametersFirst
在类中 org.hibernate.dialect.Dialect
public boolean useMaxForLimit()
useMaxForLimit
在类中 org.hibernate.dialect.SQLServerDialect
public java.lang.String getAddColumnString()
getAddColumnString
在类中 org.hibernate.dialect.Dialect
public java.lang.String getNullColumnString()
getNullColumnString
在类中 org.hibernate.dialect.Dialect
public boolean qualifyIndexName()
qualifyIndexName
在类中 org.hibernate.dialect.Dialect
public java.lang.String getForUpdateString()
getForUpdateString
在类中 org.hibernate.dialect.Dialect
public boolean supportsIdentityColumns()
supportsIdentityColumns
在类中 org.hibernate.dialect.Dialect
public java.lang.String getIdentitySelectString()
getIdentitySelectString
在类中 org.hibernate.dialect.Dialect
public java.lang.String getIdentityColumnString()
getIdentityColumnString
在类中 org.hibernate.dialect.Dialect
public boolean supportsInsertSelectIdentity()
supportsInsertSelectIdentity
在类中 org.hibernate.dialect.Dialect
public java.lang.String applyLocksToSql(java.lang.String arg0, java.util.Map arg1, java.util.Map arg2)
applyLocksToSql
在类中 org.hibernate.dialect.Dialect
public int registerResultSetOutParameter(java.sql.CallableStatement arg0, int arg1) throws java.sql.SQLException
registerResultSetOutParameter
在类中 org.hibernate.dialect.Dialect
java.sql.SQLException
public java.sql.ResultSet getResultSet(java.sql.CallableStatement arg0) throws java.sql.SQLException
getResultSet
在类中 org.hibernate.dialect.Dialect
java.sql.SQLException
public boolean supportsCurrentTimestampSelection()
supportsCurrentTimestampSelection
在类中 org.hibernate.dialect.Dialect
public boolean isCurrentTimestampSelectStringCallable()
isCurrentTimestampSelectStringCallable
在类中 org.hibernate.dialect.Dialect
public boolean supportsTemporaryTables()
supportsTemporaryTables
在类中 org.hibernate.dialect.Dialect
public java.lang.String generateTemporaryTableName(java.lang.String arg0)
generateTemporaryTableName
在类中 org.hibernate.dialect.Dialect
public boolean dropTemporaryTableAfterUse()
dropTemporaryTableAfterUse
在类中 org.hibernate.dialect.Dialect
public boolean supportsEmptyInList()
supportsEmptyInList
在类中 org.hibernate.dialect.Dialect
public boolean supportsExistsInSelect()
supportsExistsInSelect
在类中 org.hibernate.dialect.Dialect