mirror of
https://gitee.com/dromara/hutool.git
synced 2025-04-24 18:04:54 +08:00
fix code
This commit is contained in:
parent
8205a8b03a
commit
c60f30361e
@ -12,6 +12,7 @@
|
||||
|
||||
package org.dromara.hutool.db.dialect.impl;
|
||||
|
||||
import org.dromara.hutool.core.text.StrPool;
|
||||
import org.dromara.hutool.core.text.StrUtil;
|
||||
import org.dromara.hutool.db.Page;
|
||||
import org.dromara.hutool.db.dialect.DialectName;
|
||||
@ -25,6 +26,10 @@ import org.dromara.hutool.db.sql.SqlBuilder;
|
||||
public class OracleDialect extends AnsiSqlDialect {
|
||||
private static final long serialVersionUID = 6122761762247483015L;
|
||||
|
||||
private static final String DEFAULT_TABLE_ALIAS = "table_alias_";
|
||||
private static final String DEFAULT_ROW_ALIAS = "row_";
|
||||
private static final String DEFAULT_ROWNUM_ALIAS = "rownum_";
|
||||
|
||||
/**
|
||||
* 检查字段值是否为Oracle自增字段,自增字段以`.nextval`结尾
|
||||
*
|
||||
@ -36,6 +41,9 @@ public class OracleDialect extends AnsiSqlDialect {
|
||||
return (value instanceof CharSequence) && StrUtil.endWithIgnoreCase(value.toString(), ".nextval");
|
||||
}
|
||||
|
||||
/**
|
||||
* 构造
|
||||
*/
|
||||
public OracleDialect() {
|
||||
//Oracle所有字段名用双引号包围,防止字段名或表名与系统关键字冲突
|
||||
//wrapper = new Wrapper('"');
|
||||
@ -44,11 +52,27 @@ public class OracleDialect extends AnsiSqlDialect {
|
||||
@Override
|
||||
protected SqlBuilder wrapPageSql(final SqlBuilder find, final Page page) {
|
||||
final int[] startEnd = page.getStartEnd();
|
||||
|
||||
// 检查别名,避免重名
|
||||
final String sql = find.toString();
|
||||
String tableAlias = DEFAULT_TABLE_ALIAS;
|
||||
while (sql.contains(tableAlias)) {
|
||||
tableAlias += StrPool.UNDERLINE;
|
||||
}
|
||||
String rowAlias = DEFAULT_ROW_ALIAS;
|
||||
while (sql.contains(rowAlias)) {
|
||||
rowAlias += StrPool.UNDERLINE;
|
||||
}
|
||||
String rownumAlias = DEFAULT_ROWNUM_ALIAS;
|
||||
while (sql.contains(rownumAlias)) {
|
||||
rownumAlias += StrPool.UNDERLINE;
|
||||
}
|
||||
|
||||
return find
|
||||
.insertPreFragment("SELECT * FROM ( SELECT row_.*, rownum rownum_ from ( ")
|
||||
.append(" ) row_ where rownum <= ").append(startEnd[1])//
|
||||
.append(") table_alias_")//
|
||||
.append(" where table_alias_.rownum_ > ").append(startEnd[0]);//
|
||||
.insertPreFragment("SELECT * FROM ( SELECT " + rowAlias + ".*, rownum " + rownumAlias + " from ( ")
|
||||
.append(" ) row_ where rownum <= ").append(startEnd[1])//
|
||||
.append(") ").append(tableAlias)//
|
||||
.append(" where ").append(tableAlias).append(".rownum_ > ").append(startEnd[0]);//
|
||||
}
|
||||
|
||||
@Override
|
||||
|
Loading…
Reference in New Issue
Block a user