001/* 002 * Copyright (c) 2022-2025, Mybatis-Flex (fuhai999@gmail.com). 003 * <p> 004 * Licensed under the Apache License, Version 2.0 (the "License"); 005 * you may not use this file except in compliance with the License. 006 * You may obtain a copy of the License at 007 * <p> 008 * http://www.apache.org/licenses/LICENSE-2.0 009 * <p> 010 * Unless required by applicable law or agreed to in writing, software 011 * distributed under the License is distributed on an "AS IS" BASIS, 012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 013 * See the License for the specific language governing permissions and 014 * limitations under the License. 015 */ 016package com.mybatisflex.core.dialect; 017 018import com.mybatisflex.core.util.StringUtil; 019import java.util.Arrays; 020 021public enum DbType { 022 023 /** ClickHouse */ 024 CLICK_HOUSE("clickhouse", "clickhouse 数据库"), 025 026 /** CSIIDB */ 027 CSIIDB("csiidb", "CSIIDB 数据库"), 028 029 /** CUBRID */ 030 CUBRID("cubrid", "CUBRID 数据库"), 031 032 /** DB2 */ 033 DB2("db2", "DB2 数据库"), 034 DB2_1005("db2_1005", "DB2 10.5版本数据库"), 035 036 /** derby */ 037 DERBY("derby", "Derby 数据库"), 038 039 /** DM */ 040 DM("dm", "达梦数据库"), 041 042 /** Doris 兼容 Mysql,使用 MySql 驱动和协议 */ 043 DORIS("doris", "doris 数据库"), 044 045 /** Duckdb */ 046 DUCKDB("duckdb", "duckdb 数据库"), 047 048 /** Firebird */ 049 FIREBIRD("Firebird", "Firebird 数据库"), 050 051 /** Gauss */ 052 GAUSS("gauss", "Gauss 数据库"), 053 054 /** GBase */ 055 GBASE("gbase", "南大通用(华库)数据库"), 056 057 /** GBase-8c */ 058 GBASE_8C("gbase-8c", "南大通用数据库 GBase 8c"), 059 060 /** GBase-8s */ 061 GBASE_8S("gbase-8s", "南大通用数据库 GBase 8s"), 062 063 /** GBase-8s-pg */ 064 GBASE_8S_PG("gbase-8s-pg", "南大通用数据库 GBase 8s兼容pg"), 065 066 /** GOLDENDB */ 067 GOLDENDB("goldendb", "GoldenDB数据库"), 068 069 /** GOLDILOCKS */ 070 GOLDILOCKS("goldilocks", "GOLDILOCKS 数据库"), 071 072 /** greenplum */ 073 GREENPLUM("greenplum", "greenplum 数据库"), 074 075 /** H2 */ 076 H2("h2", "H2 数据库"), 077 078 /** HighGo */ 079 HIGH_GO("highgo", "瀚高数据库"), 080 081 /** Hive SQL */ 082 HIVE("Hive", "Hive SQL"), 083 084 /** HSQL */ 085 HSQL("hsql", "HSQL 数据库"), 086 087 /** Impala */ 088 IMPALA("impala", "impala 数据库"), 089 090 /** Informix */ 091 INFORMIX("informix", "Informix 数据库"), 092 093 /** Kingbase */ 094 KINGBASE_ES("kingbasees", "人大金仓数据库"), 095 096 /** lealone */ 097 LEALONE("lealone", "lealone 数据库"), 098 099 /** MARIADB */ 100 MARIADB("mariadb", "MariaDB 数据库"), 101 102 /** MYSQL */ 103 MYSQL("mysql", "MySql 数据库"), 104 105 /** OceanBase */ 106 OCEAN_BASE("oceanbase", "OceanBase 数据库"), 107 108 /** openGauss */ 109 OPENGAUSS("openGauss", "华为 openGauss 数据库"), 110 111 /** ORACLE */ 112 ORACLE("oracle", "Oracle11g 及以下数据库"), 113 114 /** oracle12c */ 115 ORACLE_12C("oracle12c", "Oracle12c 及以上数据库"), 116 117 /** Oscar */ 118 OSCAR("oscar", "神通数据库"), 119 120 /** Phoenix */ 121 PHOENIX("phoenix", "Phoenix HBase 数据库"), 122 123 /** POSTGRE_SQL */ 124 POSTGRE_SQL("postgresql", "PostgreSQL 数据库"), 125 126 /** presto */ 127 PRESTO("presto", "Presto数据库"), 128 129 /** redshift */ 130 REDSHIFT("redshift", "亚马逊 redshift 数据库"), 131 132 /** SAP_HANA */ 133 SAP_HANA("hana", "SAP_HANA 数据库"), 134 135 /** sinodb */ 136 SINODB("sinodb", "SinoDB 数据库"), 137 138 /** SQLITE */ 139 SQLITE("sqlite", "SQLite 数据库"), 140 141 /** SQLSERVER */ 142 SQLSERVER("sqlserver", "SQLServer 数据库"), 143 144 /** SqlServer 2005 数据库 */ 145 SQLSERVER_2005("sqlserver_2005", "SQLServer 数据库"), 146 147 /** SUNDB */ 148 SUNDB("sundb", "SUNDB数据库"), 149 150 /** Sybase */ 151 SYBASE("sybase", "Sybase ASE 数据库"), 152 153 /** TDengine */ 154 TDENGINE("TDengine", "TDengine 数据库"), 155 156 /** Trino */ 157 TRINO("trino", "trino 数据库"), 158 159 /** uxdb */ 160 UXDB("uxdb", "优炫数据库"), 161 162 /** VASTBASE */ 163 VASTBASE("vastbase", "Vastbase数据库"), 164 165 /** Vertica */ 166 VERTICA("vertica", "vertica数据库"), 167 168 /** XCloud */ 169 XCloud("xcloud", "行云数据库"), 170 171 /** xugu */ 172 XUGU("xugu", "虚谷数据库"), 173 174 /** yasdb */ 175 YASDB("yasdb", "崖山数据库"), 176 177 /** OTHER */ 178 OTHER("other", "其他数据库"); 179 180 /** 数据库名称 */ 181 private final String name; 182 183 /** 描述 */ 184 private final String remarks; 185 186 DbType(String name, String remarks) { 187 this.name = name; 188 this.remarks = remarks; 189 } 190 191 public String getName() { 192 return name; 193 } 194 195 /** 196 * 根据数据库类型名称自动识别数据库类型 197 * 198 * @param name 名称 199 * @return 数据库类型 200 */ 201 public static DbType findByName(String name) { 202 if (StringUtil.noText(name)) { 203 return null; 204 } 205 206 return Arrays.stream(values()) 207 .filter(em -> em.getName().equalsIgnoreCase(name)) 208 .findFirst() 209 .orElse(null); 210 } 211}