mirror of
https://gitee.com/mybatis-flex/mybatis-flex.git
synced 2025-12-06 16:48:24 +08:00
feat: add sqlServer 2005 LimitOffsetProcessor
This commit is contained in:
parent
81016ec601
commit
9582f88cf7
@ -58,6 +58,10 @@ public enum DbType {
|
||||
* SQLSERVER
|
||||
*/
|
||||
SQLSERVER("sqlserver", "SQLServer 数据库"),
|
||||
/**
|
||||
* SqlServer 2005 数据库
|
||||
*/
|
||||
SQLSERVER_2005("sqlserver_2005", "SQLServer 数据库"),
|
||||
/**
|
||||
* DM
|
||||
*/
|
||||
|
||||
@ -31,7 +31,8 @@ import java.util.regex.Pattern;
|
||||
*/
|
||||
public class DbTypeUtil {
|
||||
|
||||
private DbTypeUtil() {}
|
||||
private DbTypeUtil() {
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取当前配置的 DbType
|
||||
@ -97,8 +98,10 @@ public class DbTypeUtil {
|
||||
return DbType.MARIADB;
|
||||
} else if (jdbcUrl.contains(":oracle:")) {
|
||||
return DbType.ORACLE;
|
||||
} else if (jdbcUrl.contains(":sqlserver:") || jdbcUrl.contains(":microsoft:") || jdbcUrl.contains(":sqlserver2012:")) {
|
||||
} else if (jdbcUrl.contains(":sqlserver2012:")) {
|
||||
return DbType.SQLSERVER;
|
||||
} else if (jdbcUrl.contains(":sqlserver:") || jdbcUrl.contains(":microsoft:")) {
|
||||
return DbType.SQLSERVER_2005;
|
||||
} else if (jdbcUrl.contains(":postgresql:")) {
|
||||
return DbType.POSTGRE_SQL;
|
||||
} else if (jdbcUrl.contains(":hsqldb:")) {
|
||||
|
||||
@ -134,6 +134,8 @@ public class DialectFactory {
|
||||
return new CommonsDialectImpl(KeywordWrap.DOUBLE_QUOTATION, LimitOffsetProcessor.DERBY);
|
||||
case SQLSERVER:
|
||||
return new CommonsDialectImpl(KeywordWrap.SQUARE_BRACKETS, LimitOffsetProcessor.SQLSERVER);
|
||||
case SQLSERVER_2005:
|
||||
return new CommonsDialectImpl(KeywordWrap.SQUARE_BRACKETS, LimitOffsetProcessor.SQLSERVER_2005);
|
||||
case INFORMIX:
|
||||
return new CommonsDialectImpl(KeywordWrap.DOUBLE_QUOTATION, LimitOffsetProcessor.INFORMIX);
|
||||
case SYBASE:
|
||||
|
||||
@ -91,6 +91,22 @@ public interface LimitOffsetProcessor {
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* SqlServer 2005 limit 处理器
|
||||
*/
|
||||
LimitOffsetProcessor SQLSERVER_2005 = (sql, queryWrapper, limitRows, limitOffset) -> {
|
||||
if (limitRows != null) {
|
||||
if (limitOffset == null) {
|
||||
limitOffset = 0;
|
||||
}
|
||||
StringBuilder newSql = new StringBuilder("SELECT * FROM (SELECT TEMP_DATAS.*, ROW_NUMBER() OVER() AS RN FROM (");
|
||||
newSql.append(sql).append(") AS TEMP_DATAS) WHERE RN > ").append(limitOffset).append(" AND RN <= ").append(limitRows + limitRows);
|
||||
return newSql;
|
||||
}
|
||||
return sql;
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Informix 的处理器
|
||||
* 适合 {@link DbType#INFORMIX}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user