mirror of
https://gitee.com/mybatis-flex/mybatis-flex.git
synced 2025-12-08 01:28:24 +08:00
commit
7eddc8eeae
@ -106,7 +106,7 @@ public class DialectFactory {
|
|||||||
case CSIIDB:
|
case CSIIDB:
|
||||||
return new CommonsDialectImpl(KeywordWrap.BACKQUOTE, LimitOffsetProcesser.MYSQL);
|
return new CommonsDialectImpl(KeywordWrap.BACKQUOTE, LimitOffsetProcesser.MYSQL);
|
||||||
case ORACLE:
|
case ORACLE:
|
||||||
return new OracleDialect(KeywordWrap.DOUBLE_QUOTATION, LimitOffsetProcesser.ORACLE);
|
return new OracleDialect(LimitOffsetProcesser.ORACLE);
|
||||||
case DM:
|
case DM:
|
||||||
case GAUSS:
|
case GAUSS:
|
||||||
return new CommonsDialectImpl(KeywordWrap.DOUBLE_QUOTATION, LimitOffsetProcesser.ORACLE);
|
return new CommonsDialectImpl(KeywordWrap.DOUBLE_QUOTATION, LimitOffsetProcesser.ORACLE);
|
||||||
@ -125,7 +125,7 @@ public class DialectFactory {
|
|||||||
case UXDB:
|
case UXDB:
|
||||||
return new CommonsDialectImpl(KeywordWrap.DOUBLE_QUOTATION, LimitOffsetProcesser.POSTGRESQL);
|
return new CommonsDialectImpl(KeywordWrap.DOUBLE_QUOTATION, LimitOffsetProcesser.POSTGRESQL);
|
||||||
case ORACLE_12C:
|
case ORACLE_12C:
|
||||||
return new OracleDialect(KeywordWrap.DOUBLE_QUOTATION, LimitOffsetProcesser.DERBY);
|
return new OracleDialect(LimitOffsetProcesser.DERBY);
|
||||||
case FIREBIRD:
|
case FIREBIRD:
|
||||||
return new CommonsDialectImpl(KeywordWrap.DOUBLE_QUOTATION, LimitOffsetProcesser.DERBY);
|
return new CommonsDialectImpl(KeywordWrap.DOUBLE_QUOTATION, LimitOffsetProcesser.DERBY);
|
||||||
case SQLSERVER:
|
case SQLSERVER:
|
||||||
|
|||||||
@ -19,34 +19,63 @@ import com.mybatisflex.core.dialect.KeywordWrap;
|
|||||||
import com.mybatisflex.core.dialect.LimitOffsetProcesser;
|
import com.mybatisflex.core.dialect.LimitOffsetProcesser;
|
||||||
import com.mybatisflex.core.util.StringUtil;
|
import com.mybatisflex.core.util.StringUtil;
|
||||||
|
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Locale;
|
||||||
|
|
||||||
public class OracleDialect extends CommonsDialectImpl {
|
public class OracleDialect extends CommonsDialectImpl {
|
||||||
|
|
||||||
private boolean toUpperCase = true;
|
private boolean caseSensitive;
|
||||||
|
private final List<String> keywords = Arrays.asList(
|
||||||
public OracleDialect() {
|
"ACCESS", "ADD", "ALL", "ALTER",
|
||||||
}
|
"AND", "ANY", "ARRAYLEN", "AS",
|
||||||
|
"ASC", "AUDIT", "BETWEEN", "BY",
|
||||||
|
"CHAR", "CHECK", "CLUSTER", "COLUMN",
|
||||||
|
"COMMENT", "COMPRESS", "CONNECT", "CREATE",
|
||||||
|
"CURRENT", "DATE", "DECIMAL", "DEFAULT",
|
||||||
|
"DELETE", "DESC", "DISTINCT", "DROP",
|
||||||
|
"ELSE", "EXCLUSIVE", "EXISTS", "FILE",
|
||||||
|
"FLOAT", "FOR", "FROM", "GRANT",
|
||||||
|
"GROUP", "HAVING", "IDENTIFIED", "IMMEDIATE",
|
||||||
|
"IN", "INCREMENT", "INDEX", "INITIAL",
|
||||||
|
"INSERT", "INTEGER", "INTERSECT", "INTO",
|
||||||
|
"IS", "LEVEL", "LIKE", "LOCK",
|
||||||
|
"LONG", "MAXEXTENTS", "MINUS", "MODE",
|
||||||
|
"MODIFY", "NOAUDIT", "NOCOMPRESS", "NOT",
|
||||||
|
"NOTFOUND", "NOWAIT", "NULL", "NUMBER",
|
||||||
|
"OF", "OFFLINE", "ON", "ONLINE",
|
||||||
|
"OPTION", "OR", "ORDER", "PCTFREE",
|
||||||
|
"PRIOR", "PRIVILEGES", "PUBLIC", "RAW",
|
||||||
|
"RENAME", "RESOURCE", "REVOKE", "ROW",
|
||||||
|
"ROWID", "ROWLABEL", "ROWNUM", "ROWS",
|
||||||
|
"START", "SELECT", "SESSION", "SET",
|
||||||
|
"SHARE", "SIZE", "SMALLINT", "SQLBUF",
|
||||||
|
"SUCCESSFUL", "SYNONYM", "SYSDATE", "TABLE",
|
||||||
|
"THEN", "TO", "TRIGGER", "UID",
|
||||||
|
"UNION", "UNIQUE", "UPDATE", "USER",
|
||||||
|
"VALIDATE", "VALUES", "VARCHAR", "VARCHAR2"
|
||||||
|
);
|
||||||
|
|
||||||
public OracleDialect(LimitOffsetProcesser limitOffsetProcesser) {
|
public OracleDialect(LimitOffsetProcesser limitOffsetProcesser) {
|
||||||
super(limitOffsetProcesser);
|
super(KeywordWrap.NONE, limitOffsetProcesser);
|
||||||
}
|
}
|
||||||
|
|
||||||
public OracleDialect(KeywordWrap keywordWrap, LimitOffsetProcesser limitOffsetProcesser) {
|
public boolean isCaseSensitive() {
|
||||||
super(keywordWrap, limitOffsetProcesser);
|
return caseSensitive;
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean isToUpperCase() {
|
public void setCaseSensitive(boolean caseSensitive) {
|
||||||
return toUpperCase;
|
this.caseSensitive = caseSensitive;
|
||||||
}
|
|
||||||
|
|
||||||
public void setToUpperCase(boolean toUpperCase) {
|
|
||||||
this.toUpperCase = toUpperCase;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String wrap(String keyword) {
|
public String wrap(String keyword) {
|
||||||
if (StringUtil.isNotBlank(keyword)) {
|
if (StringUtil.isBlank(keyword)) {
|
||||||
return super.wrap(toUpperCase ? keyword.toUpperCase() : keyword);
|
return "";
|
||||||
}
|
}
|
||||||
return "";
|
if (caseSensitive || keywords.contains(keyword.toUpperCase(Locale.ENGLISH))) {
|
||||||
|
return "\"" + keyword + "\"";
|
||||||
|
}
|
||||||
|
return keyword;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user