各数据库字符串相加语法完全不同,mysql用concat函数,oracle用||操作符号,sqlserver用+操作,平台希望用一套代码兼容所有数据库。平台设计的机制如下:
QLMContants类定义了平台级别参数:
public static String DatabaseType; //数据类型
平台启动时,会调用判断数据类型函数:
public static String judgeDatabaseType(String url) {
if (!StringUtils.hasText(url)) return DBConstants.UNKNOWN;
String lowurl=url.toLowerCase();
if (lowurl.startsWith("jdbc:oracle:")) {
return DBConstants.ORACLE;
} else if (lowurl.startsWith("jdbc:mysql:")) {
return DBConstants.MYSQL;
} else if (lowurl.startsWith("jdbc:postgresql:")) {
return DBConstants.POSTGRESQL;
} else if (lowurl.startsWith("jdbc:sqlserver:")) {
return DBConstants.SQLSERVER;
} else if (lowurl.startsWith("jdbc:db2:")) {
return DBConstants.DB2;
} else {
return DBConstants.UNKNOWN;
}
}