--- title: 'Spring Boot jdbc connection' disqus: hackmd --- ###### tags: `SpringBoot` Spring Boot 多環境配置 === [TOC] ## 適用場景 不使用hibinernate 而使用傳統的mysql 連線 ## 先備條件 ## 檔案結構目錄 ## 程式碼部分 封裝 ```java= public class YahooGeminiData_Dao { private static final String className = "YahooGeminiData_Dao"; // init database constants // public static final String DATABASE_DRIVER = GlobalSettings.getDatabaseDriver(); // public static final String DATABASE_URL = GlobalSettings.getDatabaseJdbcUrl(); // public static final String USERNAME = GlobalSettings.getDatabaseUser(); // public static final String PASSWORD = GlobalSettings.getDatabasePassword(); // public static final String MAX_POOL = GlobalSettings.getDatabaseMaxPool(); public static final String DATABASE_DRIVER = GlobalSettings.getDatabaseDriver(); public static final String DATABASE_URL = ToolsPackage.getWebConfigProperties("DATABASE_JDBC_URL");//GlobalSettings.getDatabaseJdbcUrl();//ToolsPackage.getConfigProperties("DATABASE_JDBC_URL"); public static final String USERNAME = ToolsPackage.getWebConfigProperties("DATABASE_USER");//GlobalSettings.getDatabaseUser();//ToolsPackage.getConfigProperties("DATABASE_USER"); public static final String PASSWORD = ToolsPackage.getWebConfigProperties("DATABASE_PASSWORD");//GlobalSettings.getDatabasePassword();//ToolsPackage.getConfigProperties("DATABASE_PASSWORD"); public static final String MAX_POOL = GlobalSettings.getDatabaseMaxPool(); public static final String AdvertiserInfo_AccountTable = "AdvertiserInfo_Account"; public static final String AdvertiserInfo_CampaignTable = "AdvertiserInfo_Campaign"; public static final String AdvertiserInfo_AdgroupTable = "AdvertiserInfo_Adgroup"; public static final String AdvertiserInfo_AdTable = "AdvertiserInfo_Ad"; public static final String Performance_Daily_AccountTable = "Performance_Daily_Account"; public static final String Performance_Daily_CampaignTable = "Performance_Daily_Campaign"; public static final String Performance_Daily_AdGroupTable = "Performance_Daily_AdGroup"; public static final String Performance_Daily_AdTable = "Performance_Daily_Ad"; public static final String ConversionRule_Daily_AccountTable = "ConversionRule_Daily_Account"; // init connection object public Connection connection; // init properties object public Properties properties; // SQL statement private Statement stat = null; private ResultSet rs = null; private PreparedStatement pst = null; public YahooGeminiData_Dao() throws ClassNotFoundException, SQLException { connection = getDBConnection(); } // create properties public Properties getProperties() { if (properties == null) { properties = new Properties(); properties.setProperty("user", USERNAME); properties.setProperty("password", PASSWORD); properties.setProperty("MaxPooledStatements", MAX_POOL); properties.put("characterEncoding", "UTF-8"); properties.put("useUnicode", "TRUE"); } return properties; } // connect database public Connection getDBConnection() throws ClassNotFoundException, SQLException { if (connection == null) { try { Class.forName(DATABASE_DRIVER); connection = DriverManager.getConnection(DATABASE_URL, getProperties()); } catch (ClassNotFoundException e) { e.printStackTrace(); throw new ClassNotFoundException("getDBConnection ClassNotFoundException"); } catch (SQLException e) { e.printStackTrace(); throw new SQLException("getDBConnection SQLException"); } } return connection; }// End function // re-connect database public void DBReConnection() { try { this.connection = null; Class.forName(DATABASE_DRIVER); this.connection = DriverManager.getConnection(DATABASE_URL, getProperties()); } catch (ClassNotFoundException cnfe) { cnfe.printStackTrace(); } catch (SQLException sqle) { sqle.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } }// End function // disconnect database public void setDBDisconnect() { if (connection != null) { try { connection.close(); connection = null; } catch (SQLException e) { e.printStackTrace(); } } }// End function public void Close() { try { if (rs != null) { rs.close(); rs = null; } if (stat != null) { stat.close(); stat = null; } if (pst != null) { pst.close(); pst = null; } if (connection != null) { connection.close(); connection = null; } } catch (SQLException e) { System.out.println("Close Exception :" + e.toString()); } }// End function } ``` ## 參考連結 [常用方法的封裝](https://iter01.com/569083.html)