baomidou / mybatis-plus

An powerful enhanced toolkit of MyBatis for simplify development
https://baomidou.com
Apache License 2.0
16.12k stars 4.26k forks source link

sqlserver方言判断调整建议 #6293

Closed lijinan closed 1 week ago

lijinan commented 3 weeks ago

请详细描述需要增加的功能 image

如代码所示,希望 sqlserver 的方言默认设置为 DbType.SQL_SERVER 理由:1. DbType.SQL_SERVER2005 所用的分页方法效率低,并且目前sqlserver基本已经>2005版本,sqlserver2005及以下版本,官方以停止维护

  1. jdbcUrl中,并不能使用 jdbc:sqlserver2012:XXX 这样来链接新版本sqlserver数据库

希望弃用 DbType.SQL_SERVER2005 版本, 期待采纳 感谢官方

public static DbType getDbType(String jdbcUrl) { Assert.isFalse(StringUtils.isBlank(jdbcUrl), "Error: The jdbcUrl is Null, Cannot read database type"); String url = jdbcUrl.toLowerCase(); if (url.contains(":mysql:") || url.contains(":cobar:")) { return DbType.MYSQL; } else if (url.contains(":mariadb:")) { return DbType.MARIADB; } else if (url.contains(":oracle:")) { return DbType.ORACLE; } else if (url.contains(":sqlserver:") || url.contains(":microsoft:")) { return DbType.SQL_SERVER2005; } else if (url.contains(":sqlserver2012:")) { return DbType.SQL_SERVER; } else if (url.contains(":postgresql:")) { return DbType.POSTGRE_SQL; } else if (url.contains(":hsqldb:")) { return DbType.HSQL; } else if (url.contains(":db2:")) { return DbType.DB2; } else if (url.contains(":sqlite:")) { return DbType.SQLITE; } else if (url.contains(":h2:")) { return DbType.H2; } else if (url.contains(":lealone:")) { return DbType.LEALONE; } else if (regexFind(":dm\\d*:", url)) { return DbType.DM; } else if (url.contains(":xugu:")) { return DbType.XU_GU; } else if (regexFind(":kingbase\\d*:", url)) { return DbType.KINGBASE_ES; } else if (url.contains(":phoenix:")) { return DbType.PHOENIX; } else if (url.contains(":zenith:")) { return DbType.GAUSS; } else if (url.contains(":gbase:")) { return DbType.GBASE; } else if (url.contains(":gbasedbt-sqli:") || url.contains(":informix-sqli:")) { return DbType.GBASE_8S; } else if (url.contains(":gbase8s-pg:")){ return DbType.GBASE8S_PG; } else if (url.contains(":gbase8c:")) { return DbType.GBASE_8C; } else if (url.contains(":ch:") || url.contains(":clickhouse:")) { return DbType.CLICK_HOUSE; } else if (url.contains(":oscar:")) { return DbType.OSCAR; } else if (url.contains(":sybase:")) { return DbType.SYBASE; } else if (url.contains(":oceanbase:")) { return DbType.OCEAN_BASE; } else if (url.contains(":highgo:")) { return DbType.HIGH_GO; } else if (url.contains(":cubrid:")) { return DbType.CUBRID; } else if (url.contains(":sundb:")) { return DbType.SUNDB; } else if (url.contains(":sap:")) { return DbType.SAP_HANA; } else if (url.contains(":impala:")) { return DbType.IMPALA; } else if (url.contains(":vertica:")) { return DbType.VERTICA; } else if (url.contains(":xcloud:")) { return DbType.XCloud; } else if (url.contains(":firebirdsql:")) { return DbType.FIREBIRD; } else if (url.contains(":redshift:")) { return DbType.REDSHIFT; } else if (url.contains(":opengauss:")) { return DbType.OPENGAUSS; } else if (url.contains(":taos:") || url.contains(":taos-rs:")) { return DbType.TDENGINE; } else if (url.contains(":informix")) { return DbType.INFORMIX; } else if (url.contains(":sinodb")) { return DbType.SINODB; } else if (url.contains(":uxdb:")) { return DbType.UXDB; } else if (url.contains(":trino:")) { return DbType.TRINO; } else if (url.contains(":presto:")) { return DbType.PRESTO; } else { logger.warn("The jdbcUrl is " + jdbcUrl + ", Mybatis Plus Cannot Read Database type or The Database's Not Supported!"); return DbType.OTHER; } }