!22 OracleDialect默认不加双引号

Merge pull request !22 from MyronLi/main
This commit is contained in:
Michael Yang 2023-05-03 03:39:15 +00:00 committed by Gitee
commit 7eddc8eeae
No known key found for this signature in database
GPG Key ID: 173E9B9CA92EEF8F
2 changed files with 47 additions and 18 deletions

View File

@ -106,7 +106,7 @@ public class DialectFactory {
case CSIIDB:
return new CommonsDialectImpl(KeywordWrap.BACKQUOTE, LimitOffsetProcesser.MYSQL);
case ORACLE:
return new OracleDialect(KeywordWrap.DOUBLE_QUOTATION, LimitOffsetProcesser.ORACLE);
return new OracleDialect(LimitOffsetProcesser.ORACLE);
case DM:
case GAUSS:
return new CommonsDialectImpl(KeywordWrap.DOUBLE_QUOTATION, LimitOffsetProcesser.ORACLE);
@ -125,7 +125,7 @@ public class DialectFactory {
case UXDB:
return new CommonsDialectImpl(KeywordWrap.DOUBLE_QUOTATION, LimitOffsetProcesser.POSTGRESQL);
case ORACLE_12C:
return new OracleDialect(KeywordWrap.DOUBLE_QUOTATION, LimitOffsetProcesser.DERBY);
return new OracleDialect(LimitOffsetProcesser.DERBY);
case FIREBIRD:
return new CommonsDialectImpl(KeywordWrap.DOUBLE_QUOTATION, LimitOffsetProcesser.DERBY);
case SQLSERVER:

View File

@ -19,34 +19,63 @@ import com.mybatisflex.core.dialect.KeywordWrap;
import com.mybatisflex.core.dialect.LimitOffsetProcesser;
import com.mybatisflex.core.util.StringUtil;
import java.util.Arrays;
import java.util.List;
import java.util.Locale;
public class OracleDialect extends CommonsDialectImpl {
private boolean toUpperCase = true;
public OracleDialect() {
}
private boolean caseSensitive;
private final List<String> keywords = Arrays.asList(
"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) {
super(limitOffsetProcesser);
super(KeywordWrap.NONE, limitOffsetProcesser);
}
public OracleDialect(KeywordWrap keywordWrap, LimitOffsetProcesser limitOffsetProcesser) {
super(keywordWrap, limitOffsetProcesser);
public boolean isCaseSensitive() {
return caseSensitive;
}
public boolean isToUpperCase() {
return toUpperCase;
}
public void setToUpperCase(boolean toUpperCase) {
this.toUpperCase = toUpperCase;
public void setCaseSensitive(boolean caseSensitive) {
this.caseSensitive = caseSensitive;
}
@Override
public String wrap(String keyword) {
if (StringUtil.isNotBlank(keyword)) {
return super.wrap(toUpperCase ? keyword.toUpperCase() : keyword);
if (StringUtil.isBlank(keyword)) {
return "";
}
return "";
if (caseSensitive || keywords.contains(keyword.toUpperCase(Locale.ENGLISH))) {
return "\"" + keyword + "\"";
}
return keyword;
}
}