shikeying
2024-01-11 3b67e947e36133e2a40eb2737b15ea375e157ea0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
package com.walker.jdbc;
 
import com.walker.db.DatabaseType;
 
public class Constants {
 
    public static final String SQL_ORDER_BY = " order by ";
 
    public static final String getJdbcUrl(DatabaseType databaseType, String databaseName, String ip, int port){
        StringBuilder url = new StringBuilder();
        if(databaseType == DatabaseType.DERBY){
            url.append("jdbc:derby:").append(databaseName);
 
        } else if(databaseType == DatabaseType.MYSQL){
            url.append("jdbc:mysql://").append(ip).append(":")
                    .append(port == 0 ? Constants.DEFAULT_PORT_MYSQL : port)
                    .append("/").append(databaseName);
            // 因为oracle不支持这样设置参数,所以位置调换到这里 2016-11-30
            if(url.indexOf("?") >= 0){
//                url.append("&autoReconnect=true");        //当数据库连接异常中断时,是否自动重新连接
//                url.append("&failOverReadOnly=false");    //自动重连成功后,连接是否设置为只读
                url.append("&autoReconnect=true");        //当数据库连接异常中断时,是否自动重新连接
                url.append("&failOverReadOnly=false");    //自动重连成功后,连接是否设置为只读
            } else {
                url.append("?autoReconnect=true");
//                url.append("&failOverReadOnly=false");
                url.append("&failOverReadOnly=false");
            }
 
        } else if(databaseType == DatabaseType.ORACLE){
            url.append("jdbc:oracle:thin:@").append(ip).append(":")
                    .append(port == 0 ? Constants.DEFAULT_PORT_ORACLE : port)
                    .append(":").append(databaseName);
 
        } else if(databaseType == DatabaseType.POSTGRES){
            url.append("jdbc:postgresql://").append(ip).append(":")
                    .append(port == 0 ? Constants.DEFAULT_PORT_POSTGRES : port)
                    .append("/").append(databaseName);
 
        } else if(databaseType == DatabaseType.SQLSERVER){
            url.append("jdbc:sqlserver://").append(ip).append(":")
                    .append(port == 0 ? Constants.DEFAULT_PORT_POSTGRES : port)
                    .append(";DatabaseName=").append(databaseName);
 
        } else if(databaseType == DatabaseType.DAMENG){
            url.append("jdbc:dm://").append(ip).append(":")
                    .append(port == 0 ? Constants.DEFAULT_PORT_POSTGRES : port)
                    .append("?SCHEMA=").append(databaseName);
        } else
            throw new IllegalArgumentException("unsupported database type: " + databaseType);
        return url.toString();
    }
 
    public static final String getDriverClassName(DatabaseType databaseType){
        String driverName = null;
        if(databaseType == DatabaseType.DERBY){
            driverName = Constants.DRIVER_NAME_DERBY;
        } else if(databaseType == DatabaseType.MYSQL){
            driverName = Constants.DRIVER_NAME_MYSQL;
        } else if(databaseType == DatabaseType.ORACLE){
            driverName = Constants.DRIVER_NAME_ORACLE;
        } else if(databaseType == DatabaseType.POSTGRES){
            driverName = Constants.DRIVER_NAME_POSTGRES;
        } else if(databaseType == DatabaseType.SQLSERVER){
            driverName = Constants.DRIVER_NAME_SQLSERVER;
        } else if(databaseType == DatabaseType.DAMENG){
            driverName = Constants.DRIVER_NAME_DAMENG;
        } else
            throw new IllegalArgumentException("unsupported database type: " + databaseType);
        return driverName;
    }
 
    public static final String DRIVER_NAME_DERBY = "org.apache.derby.jdbc.EmbeddedDriver";
    //    public static final String DRIVER_NAME_MYSQL = "com.mysql.jdbc.Driver";
    public static final String DRIVER_NAME_MYSQL = "com.mysql.cj.jdbc.Driver";
    public static final String DRIVER_NAME_ORACLE = "oracle.jdbc.driver.OracleDriver";
    public static final String DRIVER_NAME_POSTGRES = "org.postgresql.Driver";
    public static final String DRIVER_NAME_SQLSERVER = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
    public static final String DRIVER_NAME_DAMENG = "dm.jdbc.driver.DmDriver";
 
    public static final int DEFAULT_PORT_DERBY = 0;
    public static final int DEFAULT_PORT_MYSQL = 3306;
    public static final int DEFAULT_PORT_ORACLE = 1521;
    public static final int DEFAULT_PORT_POSTGRES = 5432;
    public static final int DEFAULT_PORT_SQLSERVER = 1433;
    public static final int DEFAULT_PORT_DAMENG = 5236;
 
    /**
     * PO中加入的'parameter'(Map)字段名字。
     * @date 2023-03-24
     */
    public static final String PO_FIELD_PARAMETER = "parameter";
 
    public static final String SQL_NAME_WHERE = "where";
    public static final String SQL_NAME_AND = "and";
    public static final String SQL_NAME_LIKE = "like";
}