----------------------------理解部分-----------------------------------------
一、数据库连接池原理:(理解)
二、编写数据源(DataSource)(重要)
编写一个类实现javax.sql.DataSource
三、编程的难点:(设计模式)
难点:用一个实现了javax.sql.DataSource类的实例时,用户如果调用Connection.close()方法,会把链接关闭,失去了连接池的意义。
明确一个问题:用户得到Connection的实现是:数据库驱动对Connection接口的实现。因此,调用的close方法都是数据库驱动的,它会把链接给关闭。
(这不是我们要的,我们要把该链接换回池中)。
解决方案:改写驱动原有的close方法。对已知类的某个/某些方法进行功能上的改变,有以下几种编码方案:
a、继承:此处行不通。
到底针对哪个驱动的实现写子类(很多)
数据库驱动对Connection接口的实现类,不允许被继承
丢失了原有对象的信息。捡了芝麻丢了西瓜。
b、装饰(包装)设计模式:(基础IO)
保持被包装对象的原有信息,又可以对某个/某些方法进行改写。
实现的步骤:
1、编写一个类,实现与被包装类(数据库驱动对Connection的实现)相同的接口。(使这个类和数据库的驱动实现有着相同的行为)
2、定义一个变量,引用被包装类的实例。
3、定义构造方法,传入被包装类的实例。
4、对于要改写的方法,编写自己的代码即可。
5、对于不需要改写的方法,调用原有对象的对应方法。
c、适配器模式:
创建一个适配器的类,去把所有方法重新调用一遍
package com.yidongxueyuan.datasource;
import java.sql.Array;
import java.sql.Blob;
import java.sql.CallableStatement;
import java.sql.Clob;
import java.sql.DatabaseMetaData;
import java.sql.NClob;
import java.sql.PreparedStatement;
import java.sql.SQLClientInfoException;
import java.sql.SQLException;
import java.sql.SQLWarning;
import java.sql.SQLXML;
import java.sql.Savepoint;
import java.sql.Statement;
import java.sql.Struct;
import java.util.Map;
import java.util.Properties;
import java.util.TimeZone;
import java.util.concurrent.Executor;
import com.mysql.jdbc.Connection;
import com.mysql.jdbc.ExceptionInterceptor;
import com.mysql.jdbc.Extension;
import com.mysql.jdbc.MySQLConnection;
import com.mysql.jdbc.log.Log;
//充当适配器:
public class ConnectionAdapt implements Connection {
private Connection conn;
public ConnectionAdapt(Connection conn){
this.conn=conn;
}
@Override
public Statement createStatement() throws SQLException {
return conn.createStatement();
}
@Override
public PreparedStatement prepareStatement(String sql) throws SQLException {
return conn.prepareStatement(sql);
}
@Override
public CallableStatement prepareCall(String sql) throws SQLException {
// TODO Auto-generated method stub
return null;
}
@Override
public String nativeSQL(String sql) throws SQLException {
// TODO Auto-generated method stub
return null;
}
@Override
public void setAutoCommit(boolean autoCommit) throws SQLException {
// TODO Auto-generated method stub
}
@Override
public boolean getAutoCommit() throws SQLException {
// TODO Auto-generated method stub
return false;
}
@Override
public void commit() throws SQLException {
// TODO Auto-generated method stub
}
@Override
public void rollback() throws SQLException {
// TODO Auto-generated method stub
}
@Override
public void close() throws SQLException {
// TODO Auto-generated method stub
}
@Override
public boolean isClosed() throws SQLException {
// TODO Auto-generated method stub
return false;
}
@Override
public DatabaseMetaData getMetaData() throws SQLException {
// TODO Auto-generated method stub
return null;
}
@Override
public void setReadOnly(boolean readOnly) throws SQLException {
// TODO Auto-generated method stub
}
@Override
public boolean isReadOnly() throws SQLException {
// TODO Auto-generated method stub
return false;
}
@Override
public void setCatalog(String catalog) throws SQLException {
// TODO Auto-generated method stub
}
@Override
public String getCatalog() throws SQLException {
// TODO Auto-generated method stub
return null;
}
@Override
public void setTransactionIsolation(int level) throws SQLException {
// TODO Auto-generated method stub
}
@Override
public int getTransactionIsolation() throws SQLException {
// TODO Auto-generated method stub
return 0;
}
@Override
public SQLWarning getWarnings() throws SQLException {
// TODO Auto-generated method stub
return null;
}
@Override
public void clearWarnings() throws SQLException {
// TODO Auto-generated method stub
}
@Override
public Statement createStatement(int resultSetType, int resultSetConcurrency)
throws SQLException {
// TODO Auto-generated method stub
return null;
}
@Override
public PreparedStatement prepareStatement(String sql, int resultSetType,
int resultSetConcurrency) throws SQLException {
// TODO Auto-generated method stub
return null;
}
@Override
public CallableStatement prepareCall(String sql, int resultSetType,
int resultSetConcurrency) throws SQLException {
// TODO Auto-generated method stub
return null;
}
@Override
public Map<String, Class<?>> getTypeMap() throws SQLException {
// TODO Auto-generated method stub
return null;
}
@Override
public void setTypeMap(Map<String, Class<?>> map) throws SQLException {
// TODO Auto-generated method stub
}
@Override
public void setHoldability(int holdability) throws SQLException {
// TODO Auto-generated method stub
}
@Override
public int getHoldability() throws SQLException {
// TODO Auto-generated method stub
return 0;
}
@Override
public Savepoint setSavepoint() throws SQLException {
// TODO Auto-generated method stub
return null;
}
@Override
public Savepoint setSavepoint(String name) throws SQLException {
// TODO Auto-generated method stub
return null;
}
@Override
public void rollback(Savepoint savepoint) throws SQLException {
// TODO Auto-generated method stub
}
@Override
public void releaseSavepoint(Savepoint savepoint) throws SQLException {
// TODO Auto-generated method stub
}
@Override
public Statement createStatement(int resultSetType,
int resultSetConcurrency, int resultSetHoldability)
throws SQLException {
// TODO Auto-generated method stub
return null;
}
@Override
public PreparedStatement prepareStatement(String sql, int resultSetType,
int resultSetConcurrency, int resultSetHoldability)
throws SQLException {
// TODO Auto-generated method stub
return null;
}
@Override
public CallableStatement prepareCall(String sql, int resultSetType,
int resultSetConcurrency, int resultSetHoldability)
throws SQLException {
// TODO Auto-generated method stub
return null;
}
@Override
public PreparedStatement prepareStatement(String sql, int autoGeneratedKeys)
throws SQLException {
// TODO Auto-generated method stub
return null;
}
@Override
public PreparedStatement prepareStatement(String sql, int[] columnIndexes)
throws SQLException {
// TODO Auto-generated method stub
return null;
}
@Override
public PreparedStatement prepareStatement(String sql, String[] columnNames)
throws SQLException {
// TODO Auto-generated method stub
return null;
}
@Override
public Clob createClob() throws SQLException {
// TODO Auto-generated method stub
return null;
}
@Override
public Blob createBlob() throws SQLException {
// TODO Auto-generated method stub
return null;
}
@Override
public NClob createNClob() throws SQLException {
// TODO Auto-generated method stub
return null;
}
@Override
public SQLXML createSQLXML() throws SQLException {
// TODO Auto-generated method stub
return null;
}
@Override
public boolean isValid(int timeout) throws SQLException {
// TODO Auto-generated method stub
return false;
}
@Override
public void setClientInfo(String name, String value)
throws SQLClientInfoException {
// TODO Auto-generated method stub
}
@Override
public void setClientInfo(Properties properties)
throws SQLClientInfoException {
// TODO Auto-generated method stub
}
@Override
public String getClientInfo(String name) throws SQLException {
// TODO Auto-generated method stub
return null;
}
@Override
public Properties getClientInfo() throws SQLException {
// TODO Auto-generated method stub
return null;
}
@Override
public Array createArrayOf(String typeName, Object[] elements)
throws SQLException {
// TODO Auto-generated method stub
return null;
}
@Override
public Struct createStruct(String typeName, Object[] attributes)
throws SQLException {
// TODO Auto-generated method stub
return null;
}
@Override
public <T> T unwrap(Class<T> iface) throws SQLException {
// TODO Auto-generated method stub
return null;
}
@Override
public boolean isWrapperFor(Class<?> iface) throws SQLException {
// TODO Auto-generated method stub
return false;
}
@Override
public String exposeAsXml() throws SQLException {
// TODO Auto-generated method stub
return null;
}
@Override
public boolean getAllowLoadLocalInfile() {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean getAllowMasterDownConnections() {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean getAllowMultiQueries() {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean getAllowNanAndInf() {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean getAllowUrlInLocalInfile() {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean getAlwaysSendSetIsolation() {
// TODO Auto-generated method stub
return false;
}
@Override
public String getAuthenticationPlugins() {
// TODO Auto-generated method stub
return null;
}
@Override
public boolean getAutoClosePStmtStreams() {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean getAutoDeserialize() {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean getAutoGenerateTestcaseScript() {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean getAutoReconnectForPools() {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean getAutoSlowLog() {
// TODO Auto-generated method stub
return false;
}
@Override
public int getBlobSendChunkSize() {
// TODO Auto-generated method stub
return 0;
}
@Override
public boolean getBlobsAreStrings() {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean getCacheCallableStatements() {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean getCacheCallableStmts() {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean getCachePrepStmts() {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean getCachePreparedStatements() {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean getCacheResultSetMetadata() {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean getCacheServerConfiguration() {
// TODO Auto-generated method stub
return false;
}
@Override
public int getCallableStatementCacheSize() {
// TODO Auto-generated method stub
return 0;
}
@Override
public int getCallableStmtCacheSize() {
// TODO Auto-generated method stub
return 0;
}
@Override
public boolean getCapitalizeTypeNames() {
// TODO Auto-generated method stub
return false;
}
@Override
public String getCharacterSetResults() {
// TODO Auto-generated method stub
return null;
}
@Override
public String getClientCertificateKeyStorePassword() {
// TODO Auto-generated method stub
return null;
}
@Override
public String getClientCertificateKeyStoreType() {
// TODO Auto-generated method stub
return null;
}
@Override
public String getClientCertificateKeyStoreUrl() {
// TODO Auto-generated method stub
return null;
}
@Override
public String getClientInfoProvider() {
// TODO Auto-generated method stub
return null;
}
@Override
public String getClobCharacterEncoding() {
// TODO Auto-generated method stub
return null;
}
@Override
public boolean getClobberStreamingResults() {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean getCompensateOnDuplicateKeyUpdateCounts() {
// TODO Auto-generated method stub
return false;
}
@Override
public int getConnectTimeout() {
// TODO Auto-generated method stub
return 0;
}
@Override
public String getConnectionAttributes() throws SQLException {
// TODO Auto-generated method stub
return null;
}
@Override
public String getConnectionCollation() {
// TODO Auto-generated method stub
return null;
}
@Override
public String getConnectionLifecycleInterceptors() {
// TODO Auto-generated method stub
return null;
}
@Override
public boolean getContinueBatchOnError() {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean getCreateDatabaseIfNotExist() {
// TODO Auto-generated method stub
return false;
}
@Override
public String getDefaultAuthenticationPlugin() {
// TODO Auto-generated method stub
return null;
}
@Override
public int getDefaultFetchSize() {
// TODO Auto-generated method stub
return 0;
}
@Override
public String getDisabledAuthenticationPlugins() {
// TODO Auto-generated method stub
return null;
}
@Override
public boolean getDisconnectOnExpiredPasswords() {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean getDontTrackOpenResources() {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean getDumpMetadataOnColumnNotFound() {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean getDumpQueriesOnException() {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean getDynamicCalendars() {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean getElideSetAutoCommits() {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean getEmptyStringsConvertToZero() {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean getEmulateLocators() {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean getEmulateUnsupportedPstmts() {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean getEnablePacketDebug() {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean getEnableQueryTimeouts() {
// TODO Auto-generated method stub
return false;
}
@Override
public String getEncoding() {
// TODO Auto-generated method stub
return null;
}
@Override
public ExceptionInterceptor getExceptionInterceptor() {
// TODO Auto-generated method stub
return null;
}
@Override
public String getExceptionInterceptors() {
// TODO Auto-generated method stub
return null;
}
@Override
public boolean getExplainSlowQueries() {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean getFailOverReadOnly() {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean getFunctionsNeverReturnBlobs() {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean getGatherPerfMetrics() {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean getGatherPerformanceMetrics() {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean getGenerateSimpleParameterMetadata() {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean getGetProceduresReturnsFunctions() {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean getHoldResultsOpenOverStatementClose() {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean getIgnoreNonTxTables() {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean getIncludeInnodbStatusInDeadlockExceptions() {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean getIncludeThreadDumpInDeadlockExceptions() {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean getIncludeThreadNamesAsStatementComment() {
// TODO Auto-generated method stub
return false;
}
@Override
public int getInitialTimeout() {
// TODO Auto-generated method stub
return 0;
}
@Override
public boolean getInteractiveClient() {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean getIsInteractiveClient() {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean getJdbcCompliantTruncation() {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean getJdbcCompliantTruncationForReads() {
// TODO Auto-generated method stub
return false;
}
@Override
public String getLargeRowSizeThreshold() {
// TODO Auto-generated method stub
return null;
}
@Override
public String getLoadBalanceAutoCommitStatementRegex() {
// TODO Auto-generated method stub
return null;
}
@Override
public int getLoadBalanceAutoCommitStatementThreshold() {
// TODO Auto-generated method stub
return 0;
}
@Override
public int getLoadBalanceBlacklistTimeout() {
// TODO Auto-generated method stub
return 0;
}
@Override
public String getLoadBalanceConnectionGroup() {
// TODO Auto-generated method stub
return null;
}
@Override
public boolean getLoadBalanceEnableJMX() {
// TODO Auto-generated method stub
return false;
}
@Override
public String getLoadBalanceExceptionChecker() {
// TODO Auto-generated method stub
return null;
}
@Override
public int getLoadBalancePingTimeout() {
// TODO Auto-generated method stub
return 0;
}
@Override
public String getLoadBalanceSQLExceptionSubclassFailover() {
// TODO Auto-generated method stub
return null;
}
@Override
public String getLoadBalanceSQLStateFailover() {
// TODO Auto-generated method stub
return null;
}
@Override
public String getLoadBalanceStrategy() {
// TODO Auto-generated method stub
return null;
}
@Override
public boolean getLoadBalanceValidateConnectionOnSwapServer() {
// TODO Auto-generated method stub
return false;
}
@Override
public String getLocalSocketAddress() {
// TODO Auto-generated method stub
return null;
}
@Override
public int getLocatorFetchBufferSize() {
// TODO Auto-generated method stub
return 0;
}
@Override
public boolean getLogSlowQueries() {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean getLogXaCommands() {
// TODO Auto-generated method stub
return false;
}
@Override
public String getLogger() {
// TODO Auto-generated method stub
return null;
}
@Override
public String getLoggerClassName() {
// TODO Auto-generated method stub
return null;
}
@Override
public boolean getMaintainTimeStats() {
// TODO Auto-generated method stub
return false;
}
@Override
public int getMaxAllowedPacket() {
// TODO Auto-generated method stub
return 0;
}
@Override
public int getMaxQuerySizeToLog() {
// TODO Auto-generated method stub
return 0;
}
@Override
public int getMaxReconnects() {
// TODO Auto-generated method stub
return 0;
}
@Override
public int getMaxRows() {
// TODO Auto-generated method stub
return 0;
}
@Override
public int getMetadataCacheSize() {
// TODO Auto-generated method stub
return 0;
}
@Override
public int getNetTimeoutForStreamingResults() {
// TODO Auto-generated method stub
return 0;
}
@Override
public boolean getNoAccessToProcedureBodies() {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean getNoDatetimeStringSync() {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean getNoTimezoneConversionForTimeType() {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean getNullCatalogMeansCurrent() {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean getNullNamePatternMatchesAll() {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean getOverrideSupportsIntegrityEnhancementFacility() {
// TODO Auto-generated method stub
return false;
}
@Override
public int getPacketDebugBufferSize() {
// TODO Auto-generated method stub
return 0;
}
@Override
public boolean getPadCharsWithSpace() {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean getParanoid() {
// TODO Auto-generated method stub
return false;
}
@Override
public String getParseInfoCacheFactory() {
// TODO Auto-generated method stub
return null;
}
@Override
public String getPasswordCharacterEncoding() {
// TODO Auto-generated method stub
return null;
}
@Override
public boolean getPedantic() {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean getPinGlobalTxToPhysicalConnection() {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean getPopulateInsertRowWithDefaultValues() {
// TODO Auto-generated method stub
return false;
}
@Override
public int getPrepStmtCacheSize() {
// TODO Auto-generated method stub
return 0;
}
@Override
public int getPrepStmtCacheSqlLimit() {
// TODO Auto-generated method stub
return 0;
}
@Override
public int getPreparedStatementCacheSize() {
// TODO Auto-generated method stub
return 0;
}
@Override
public int getPreparedStatementCacheSqlLimit() {
// TODO Auto-generated method stub
return 0;
}
@Override
public boolean getProcessEscapeCodesForPrepStmts() {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean getProfileSQL() {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean getProfileSql() {
// TODO Auto-generated method stub
return false;
}
@Override
public String getProfilerEventHandler() {
// TODO Auto-generated method stub
return null;
}
@Override
public String getPropertiesTransform() {
// TODO Auto-generated method stub
return null;
}
@Override
public int getQueriesBeforeRetryMaster() {
// TODO Auto-generated method stub
return 0;
}
@Override
public boolean getQueryTimeoutKillsConnection() {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean getReconnectAtTxEnd() {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean getRelaxAutoCommit() {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean getReplicationEnableJMX() {
// TODO Auto-generated method stub
return false;
}
@Override
public int getReportMetricsIntervalMillis() {
// TODO Auto-generated method stub
return 0;
}
@Override
public boolean getRequireSSL() {
// TODO Auto-generated method stub
return false;
}
@Override
public String getResourceId() {
// TODO Auto-generated method stub
return null;
}
@Override
public int getResultSetSizeThreshold() {
// TODO Auto-generated method stub
return 0;
}
@Override
public boolean getRetainStatementAfterResultSetClose() {
// TODO Auto-generated method stub
return false;
}
@Override
public int getRetriesAllDown() {
// TODO Auto-generated method stub
return 0;
}
@Override
public boolean getRewriteBatchedStatements() {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean getRollbackOnPooledClose() {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean getRoundRobinLoadBalance() {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean getRunningCTS13() {
// TODO Auto-generated method stub
return false;
}
@Override
public int getSecondsBeforeRetryMaster() {
// TODO Auto-generated method stub
return 0;
}
@Override
public int getSelfDestructOnPingMaxOperations() {
// TODO Auto-generated method stub
return 0;
}
@Override
public int getSelfDestructOnPingSecondsLifetime() {
// TODO Auto-generated method stub
return 0;
}
@Override
public String getServerConfigCacheFactory() {
// TODO Auto-generated method stub
return null;
}
@Override
public String getServerTimezone() {
// TODO Auto-generated method stub
return null;
}
@Override
public String getSessionVariables() {
// TODO Auto-generated method stub
return null;
}
@Override
public int getSlowQueryThresholdMillis() {
// TODO Auto-generated method stub
return 0;
}
@Override
public long getSlowQueryThresholdNanos() {
// TODO Auto-generated method stub
return 0;
}
@Override
public String getSocketFactory() {
// TODO Auto-generated method stub
return null;
}
@Override
public String getSocketFactoryClassName() {
// TODO Auto-generated method stub
return null;
}
@Override
public int getSocketTimeout() {
// TODO Auto-generated method stub
return 0;
}
@Override
public String getStatementInterceptors() {
// TODO Auto-generated method stub
return null;
}
@Override
public boolean getStrictFloatingPoint() {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean getStrictUpdates() {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean getTcpKeepAlive() {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean getTcpNoDelay() {
// TODO Auto-generated method stub
return false;
}
@Override
public int getTcpRcvBuf() {
// TODO Auto-generated method stub
return 0;
}
@Override
public int getTcpSndBuf() {
// TODO Auto-generated method stub
return 0;
}
@Override
public int getTcpTrafficClass() {
// TODO Auto-generated method stub
return 0;
}
@Override
public boolean getTinyInt1isBit() {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean getTraceProtocol() {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean getTransformedBitIsBoolean() {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean getTreatUtilDateAsTimestamp() {
// TODO Auto-generated method stub
return false;
}
@Override
public String getTrustCertificateKeyStorePassword() {
// TODO Auto-generated method stub
return null;
}
@Override
public String getTrustCertificateKeyStoreType() {
// TODO Auto-generated method stub
return null;
}
@Override
public String getTrustCertificateKeyStoreUrl() {
// TODO Auto-generated method stub
return null;
}
@Override
public boolean getUltraDevHack() {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean getUseAffectedRows() {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean getUseBlobToStoreUTF8OutsideBMP() {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean getUseColumnNamesInFindColumn() {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean getUseCompression() {
// TODO Auto-generated method stub
return false;
}
@Override
public String getUseConfigs() {
// TODO Auto-generated method stub
return null;
}
@Override
public boolean getUseCursorFetch() {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean getUseDirectRowUnpack() {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean getUseDynamicCharsetInfo() {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean getUseFastDateParsing() {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean getUseFastIntParsing() {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean getUseGmtMillisForDatetimes() {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean getUseHostsInPrivileges() {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean getUseInformationSchema() {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean getUseJDBCCompliantTimezoneShift() {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean getUseJvmCharsetConverters() {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean getUseLegacyDatetimeCode() {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean getUseLocalSessionState() {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean getUseLocalTransactionState() {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean getUseNanosForElapsedTime() {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean getUseOldAliasMetadataBehavior() {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean getUseOldUTF8Behavior() {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean getUseOnlyServerErrorMessages() {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean getUseReadAheadInput() {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean getUseSSL() {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean getUseSSPSCompatibleTimezoneShift() {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean getUseServerPrepStmts() {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean getUseServerPreparedStmts() {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean getUseSqlStateCodes() {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean getUseStreamLengthsInPrepStmts() {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean getUseTimezone() {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean getUseUltraDevWorkAround() {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean getUseUnbufferedInput() {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean getUseUnicode() {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean getUseUsageAdvisor() {
// TODO Auto-generated method stub
return false;
}
@Override
public String getUtf8OutsideBmpExcludedColumnNamePattern() {
// TODO Auto-generated method stub
return null;
}
@Override
public String getUtf8OutsideBmpIncludedColumnNamePattern() {
// TODO Auto-generated method stub
return null;
}
@Override
public boolean getVerifyServerCertificate() {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean getYearIsDateType() {
// TODO Auto-generated method stub
return false;
}
@Override
public String getZeroDateTimeBehavior() {
// TODO Auto-generated method stub
return null;
}
@Override
public void setAllowLoadLocalInfile(boolean arg0) {
// TODO Auto-generated method stub
}
@Override
public void setAllowMasterDownConnections(boolean arg0) {
// TODO Auto-generated method stub
}
@Override
public void setAllowMultiQueries(boolean arg0) {
// TODO Auto-generated method stub
}
@Override
public void setAllowNanAndInf(boolean arg0) {
// TODO Auto-generated method stub
}
@Override
public void setAllowUrlInLocalInfile(boolean arg0) {
// TODO Auto-generated method stub
}
@Override
public void setAlwaysSendSetIsolation(boolean arg0) {
// TODO Auto-generated method stub
}
@Override
public void setAuthenticationPlugins(String arg0) {
// TODO Auto-generated method stub
}
@Override
public void setAutoClosePStmtStreams(boolean arg0) {
// TODO Auto-generated method stub
}
@Override
public void setAutoDeserialize(boolean arg0) {
// TODO Auto-generated method stub
}
@Override
public void setAutoGenerateTestcaseScript(boolean arg0) {
// TODO Auto-generated method stub
}
@Override
public void setAutoReconnect(boolean arg0) {
// TODO Auto-generated method stub
}
@Override
public void setAutoReconnectForConnectionPools(boolean arg0) {
// TODO Auto-generated method stub
}
@Override
public void setAutoReconnectForPools(boolean arg0) {
// TODO Auto-generated method stub
}
@Override
public void setAutoSlowLog(boolean arg0) {
// TODO Auto-generated method stub
}
@Override
public void setBlobSendChunkSize(String arg0) throws SQLException {
// TODO Auto-generated method stub
}
@Override
public void setBlobsAreStrings(boolean arg0) {
// TODO Auto-generated method stub
}
@Override
public void setCacheCallableStatements(boolean arg0) {
// TODO Auto-generated method stub
}
@Override
public void setCacheCallableStmts(boolean arg0) {
// TODO Auto-generated method stub
}
@Override
public void setCachePrepStmts(boolean arg0) {
// TODO Auto-generated method stub
}
@Override
public void setCachePreparedStatements(boolean arg0) {
// TODO Auto-generated method stub
}
@Override
public void setCacheResultSetMetadata(boolean arg0) {
// TODO Auto-generated method stub
}
@Override
public void setCacheServerConfiguration(boolean arg0) {
// TODO Auto-generated method stub
}
@Override
public void setCallableStatementCacheSize(int arg0) throws SQLException {
// TODO Auto-generated method stub
}
@Override
public void setCallableStmtCacheSize(int arg0) throws SQLException {
// TODO Auto-generated method stub
}
@Override
public void setCapitalizeDBMDTypes(boolean arg0) {
// TODO Auto-generated method stub
}
@Override
public void setCapitalizeTypeNames(boolean arg0) {
// TODO Auto-generated method stub
}
@Override
public void setCharacterEncoding(String arg0) {
// TODO Auto-generated method stub
}
@Override
public void setCharacterSetResults(String arg0) {
// TODO Auto-generated method stub
}
@Override
public void setClientCertificateKeyStorePassword(String arg0) {
// TODO Auto-generated method stub
}
@Override
public void setClientCertificateKeyStoreType(String arg0) {
// TODO Auto-generated method stub
}
@Override
public void setClientCertificateKeyStoreUrl(String arg0) {
// TODO Auto-generated method stub
}
@Override
public void setClientInfoProvider(String arg0) {
// TODO Auto-generated method stub
}
@Override
public void setClobCharacterEncoding(String arg0) {
// TODO Auto-generated method stub
}
@Override
public void setClobberStreamingResults(boolean arg0) {
// TODO Auto-generated method stub
}
@Override
public void setCompensateOnDuplicateKeyUpdateCounts(boolean arg0) {
// TODO Auto-generated method stub
}
@Override
public void setConnectTimeout(int arg0) throws SQLException {
// TODO Auto-generated method stub
}
@Override
public void setConnectionCollation(String arg0) {
// TODO Auto-generated method stub
}
@Override
public void setConnectionLifecycleInterceptors(String arg0) {
// TODO Auto-generated method stub
}
@Override
public void setContinueBatchOnError(boolean arg0) {
// TODO Auto-generated method stub
}
@Override
public void setCreateDatabaseIfNotExist(boolean arg0) {
// TODO Auto-generated method stub
}
@Override
public void setDefaultAuthenticationPlugin(String arg0) {
// TODO Auto-generated method stub
}
@Override
public void setDefaultFetchSize(int arg0) throws SQLException {
// TODO Auto-generated method stub
}
@Override
public void setDetectServerPreparedStmts(boolean arg0) {
// TODO Auto-generated method stub
}
@Override
public void setDisabledAuthenticationPlugins(String arg0) {
// TODO Auto-generated method stub
}
@Override
public void setDisconnectOnExpiredPasswords(boolean arg0) {
// TODO Auto-generated method stub
}
@Override
public void setDontTrackOpenResources(boolean arg0) {
// TODO Auto-generated method stub
}
@Override
public void setDumpMetadataOnColumnNotFound(boolean arg0) {
// TODO Auto-generated method stub
}
@Override
public void setDumpQueriesOnException(boolean arg0) {
// TODO Auto-generated method stub
}
@Override
public void setDynamicCalendars(boolean arg0) {
// TODO Auto-generated method stub
}
@Override
public void setElideSetAutoCommits(boolean arg0) {
// TODO Auto-generated method stub
}
@Override
public void setEmptyStringsConvertToZero(boolean arg0) {
// TODO Auto-generated method stub
}
@Override
public void setEmulateLocators(boolean arg0) {
// TODO Auto-generated method stub
}
@Override
public void setEmulateUnsupportedPstmts(boolean arg0) {
// TODO Auto-generated method stub
}
@Override
public void setEnablePacketDebug(boolean arg0) {
// TODO Auto-generated method stub
}
@Override
public void setEnableQueryTimeouts(boolean arg0) {
// TODO Auto-generated method stub
}
@Override
public void setEncoding(String arg0) {
// TODO Auto-generated method stub
}
@Override
public void setExceptionInterceptors(String arg0) {
// TODO Auto-generated method stub
}
@Override
public void setExplainSlowQueries(boolean arg0) {
// TODO Auto-generated method stub
}
@Override
public void setFailOverReadOnly(boolean arg0) {
// TODO Auto-generated method stub
}
@Override
public void setFunctionsNeverReturnBlobs(boolean arg0) {
// TODO Auto-generated method stub
}
@Override
public void setGatherPerfMetrics(boolean arg0) {
// TODO Auto-generated method stub
}
@Override
public void setGatherPerformanceMetrics(boolean arg0) {
// TODO Auto-generated method stub
}
@Override
public void setGenerateSimpleParameterMetadata(boolean arg0) {
// TODO Auto-generated method stub
}
@Override
public void setGetProceduresReturnsFunctions(boolean arg0) {
// TODO Auto-generated method stub
}
@Override
public void setHoldResultsOpenOverStatementClose(boolean arg0) {
// TODO Auto-generated method stub
}
@Override
public void setIgnoreNonTxTables(boolean arg0) {
// TODO Auto-generated method stub
}
@Override
public void setIncludeInnodbStatusInDeadlockExceptions(boolean arg0) {
// TODO Auto-generated method stub
}
@Override
public void setIncludeThreadDumpInDeadlockExceptions(boolean arg0) {
// TODO Auto-generated method stub
}
@Override
public void setIncludeThreadNamesAsStatementComment(boolean arg0) {
// TODO Auto-generated method stub
}
@Override
public void setInitialTimeout(int arg0) throws SQLException {
// TODO Auto-generated method stub
}
@Override
public void setInteractiveClient(boolean arg0) {
// TODO Auto-generated method stub
}
@Override
public void setIsInteractiveClient(boolean arg0) {
// TODO Auto-generated method stub
}
@Override
public void setJdbcCompliantTruncation(boolean arg0) {
// TODO Auto-generated method stub
}
@Override
public void setJdbcCompliantTruncationForReads(boolean arg0) {
// TODO Auto-generated method stub
}
@Override
public void setLargeRowSizeThreshold(String arg0) throws SQLException {
// TODO Auto-generated method stub
}
@Override
public void setLoadBalanceAutoCommitStatementRegex(String arg0) {
// TODO Auto-generated method stub
}
@Override
public void setLoadBalanceAutoCommitStatementThreshold(int arg0)
throws SQLException {
// TODO Auto-generated method stub
}
@Override
public void setLoadBalanceBlacklistTimeout(int arg0) throws SQLException {
// TODO Auto-generated method stub
}
@Override
public void setLoadBalanceConnectionGroup(String arg0) {
// TODO Auto-generated method stub
}
@Override
public void setLoadBalanceEnableJMX(boolean arg0) {
// TODO Auto-generated method stub
}
@Override
public void setLoadBalanceExceptionChecker(String arg0) {
// TODO Auto-generated method stub
}
@Override
public void setLoadBalancePingTimeout(int arg0) throws SQLException {
// TODO Auto-generated method stub
}
@Override
public void setLoadBalanceSQLExceptionSubclassFailover(String arg0) {
// TODO Auto-generated method stub
}
@Override
public void setLoadBalanceSQLStateFailover(String arg0) {
// TODO Auto-generated method stub
}
@Override
public void setLoadBalanceStrategy(String arg0) {
// TODO Auto-generated method stub
}
@Override
public void setLoadBalanceValidateConnectionOnSwapServer(boolean arg0) {
// TODO Auto-generated method stub
}
@Override
public void setLocalSocketAddress(String arg0) {
// TODO Auto-generated method stub
}
@Override
public void setLocatorFetchBufferSize(String arg0) throws SQLException {
// TODO Auto-generated method stub
}
@Override
public void setLogSlowQueries(boolean arg0) {
// TODO Auto-generated method stub
}
@Override
public void setLogXaCommands(boolean arg0) {
// TODO Auto-generated method stub
}
@Override
public void setLogger(String arg0) {
// TODO Auto-generated method stub
}
@Override
public void setLoggerClassName(String arg0) {
// TODO Auto-generated method stub
}
@Override
public void setMaintainTimeStats(boolean arg0) {
// TODO Auto-generated method stub
}
@Override
public void setMaxQuerySizeToLog(int arg0) throws SQLException {
// TODO Auto-generated method stub
}
@Override
public void setMaxReconnects(int arg0) throws SQLException {
// TODO Auto-generated method stub
}
@Override
public void setMaxRows(int arg0) throws SQLException {
// TODO Auto-generated method stub
}
@Override
public void setMetadataCacheSize(int arg0) throws SQLException {
// TODO Auto-generated method stub
}
@Override
public void setNetTimeoutForStreamingResults(int arg0) throws SQLException {
// TODO Auto-generated method stub
}
@Override
public void setNoAccessToProcedureBodies(boolean arg0) {
// TODO Auto-generated method stub
}
@Override
public void setNoDatetimeStringSync(boolean arg0) {
// TODO Auto-generated method stub
}
@Override
public void setNoTimezoneConversionForTimeType(boolean arg0) {
// TODO Auto-generated method stub
}
@Override
public void setNullCatalogMeansCurrent(boolean arg0) {
// TODO Auto-generated method stub
}
@Override
public void setNullNamePatternMatchesAll(boolean arg0) {
// TODO Auto-generated method stub
}
@Override
public void setOverrideSupportsIntegrityEnhancementFacility(boolean arg0) {
// TODO Auto-generated method stub
}
@Override
public void setPacketDebugBufferSize(int arg0) throws SQLException {
// TODO Auto-generated method stub
}
@Override
public void setPadCharsWithSpace(boolean arg0) {
// TODO Auto-generated method stub
}
@Override
public void setParanoid(boolean arg0) {
// TODO Auto-generated method stub
}
@Override
public void setParseInfoCacheFactory(String arg0) {
// TODO Auto-generated method stub
}
@Override
public void setPasswordCharacterEncoding(String arg0) {
// TODO Auto-generated method stub
}
@Override
public void setPedantic(boolean arg0) {
// TODO Auto-generated method stub
}
@Override
public void setPinGlobalTxToPhysicalConnection(boolean arg0) {
// TODO Auto-generated method stub
}
@Override
public void setPopulateInsertRowWithDefaultValues(boolean arg0) {
// TODO Auto-generated method stub
}
@Override
public void setPrepStmtCacheSize(int arg0) throws SQLException {
// TODO Auto-generated method stub
}
@Override
public void setPrepStmtCacheSqlLimit(int arg0) throws SQLException {
// TODO Auto-generated method stub
}
@Override
public void setPreparedStatementCacheSize(int arg0) throws SQLException {
// TODO Auto-generated method stub
}
@Override
public void setPreparedStatementCacheSqlLimit(int arg0) throws SQLException {
// TODO Auto-generated method stub
}
@Override
public void setProcessEscapeCodesForPrepStmts(boolean arg0) {
// TODO Auto-generated method stub
}
@Override
public void setProfileSQL(boolean arg0) {
// TODO Auto-generated method stub
}
@Override
public void setProfileSql(boolean arg0) {
// TODO Auto-generated method stub
}
@Override
public void setProfilerEventHandler(String arg0) {
// TODO Auto-generated method stub
}
@Override
public void setPropertiesTransform(String arg0) {
// TODO Auto-generated method stub
}
@Override
public void setQueriesBeforeRetryMaster(int arg0) throws SQLException {
// TODO Auto-generated method stub
}
@Override
public void setQueryTimeoutKillsConnection(boolean arg0) {
// TODO Auto-generated method stub
}
@Override
public void setReconnectAtTxEnd(boolean arg0) {
// TODO Auto-generated method stub
}
@Override
public void setRelaxAutoCommit(boolean arg0) {
// TODO Auto-generated method stub
}
@Override
public void setReplicationEnableJMX(boolean arg0) {
// TODO Auto-generated method stub
}
@Override
public void setReportMetricsIntervalMillis(int arg0) throws SQLException {
// TODO Auto-generated method stub
}
@Override
public void setRequireSSL(boolean arg0) {
// TODO Auto-generated method stub
}
@Override
public void setResourceId(String arg0) {
// TODO Auto-generated method stub
}
@Override
public void setResultSetSizeThreshold(int arg0) throws SQLException {
// TODO Auto-generated method stub
}
@Override
public void setRetainStatementAfterResultSetClose(boolean arg0) {
// TODO Auto-generated method stub
}
@Override
public void setRetriesAllDown(int arg0) throws SQLException {
// TODO Auto-generated method stub
}
@Override
public void setRewriteBatchedStatements(boolean arg0) {
// TODO Auto-generated method stub
}
@Override
public void setRollbackOnPooledClose(boolean arg0) {
// TODO Auto-generated method stub
}
@Override
public void setRoundRobinLoadBalance(boolean arg0) {
// TODO Auto-generated method stub
}
@Override
public void setRunningCTS13(boolean arg0) {
// TODO Auto-generated method stub
}
@Override
public void setSecondsBeforeRetryMaster(int arg0) throws SQLException {
// TODO Auto-generated method stub
}
@Override
public void setSelfDestructOnPingMaxOperations(int arg0)
throws SQLException {
// TODO Auto-generated method stub
}
@Override
public void setSelfDestructOnPingSecondsLifetime(int arg0)
throws SQLException {
// TODO Auto-generated method stub
}
@Override
public void setServerConfigCacheFactory(String arg0) {
// TODO Auto-generated method stub
}
@Override
public void setServerTimezone(String arg0) {
// TODO Auto-generated method stub
}
@Override
public void setSessionVariables(String arg0) {
// TODO Auto-generated method stub
}
@Override
public void setSlowQueryThresholdMillis(int arg0) throws SQLException {
// TODO Auto-generated method stub
}
@Override
public void setSlowQueryThresholdNanos(long arg0) throws SQLException {
// TODO Auto-generated method stub
}
@Override
public void setSocketFactory(String arg0) {
// TODO Auto-generated method stub
}
@Override
public void setSocketFactoryClassName(String arg0) {
// TODO Auto-generated method stub
}
@Override
public void setSocketTimeout(int arg0) throws SQLException {
// TODO Auto-generated method stub
}
@Override
public void setStatementInterceptors(String arg0) {
// TODO Auto-generated method stub
}
@Override
public void setStrictFloatingPoint(boolean arg0) {
// TODO Auto-generated method stub
}
@Override
public void setStrictUpdates(boolean arg0) {
// TODO Auto-generated method stub
}
@Override
public void setTcpKeepAlive(boolean arg0) {
// TODO Auto-generated method stub
}
@Override
public void setTcpNoDelay(boolean arg0) {
// TODO Auto-generated method stub
}
@Override
public void setTcpRcvBuf(int arg0) throws SQLException {
// TODO Auto-generated method stub
}
@Override
public void setTcpSndBuf(int arg0) throws SQLException {
// TODO Auto-generated method stub
}
@Override
public void setTcpTrafficClass(int arg0) throws SQLException {
// TODO Auto-generated method stub
}
@Override
public void setTinyInt1isBit(boolean arg0) {
// TODO Auto-generated method stub
}
@Override
public void setTraceProtocol(boolean arg0) {
// TODO Auto-generated method stub
}
@Override
public void setTransformedBitIsBoolean(boolean arg0) {
// TODO Auto-generated method stub
}
@Override
public void setTreatUtilDateAsTimestamp(boolean arg0) {
// TODO Auto-generated method stub
}
@Override
public void setTrustCertificateKeyStorePassword(String arg0) {
// TODO Auto-generated method stub
}
@Override
public void setTrustCertificateKeyStoreType(String arg0) {
// TODO Auto-generated method stub
}
@Override
public void setTrustCertificateKeyStoreUrl(String arg0) {
// TODO Auto-generated method stub
}
@Override
public void setUltraDevHack(boolean arg0) {
// TODO Auto-generated method stub
}
@Override
public void setUseAffectedRows(boolean arg0) {
// TODO Auto-generated method stub
}
@Override
public void setUseBlobToStoreUTF8OutsideBMP(boolean arg0) {
// TODO Auto-generated method stub
}
@Override
public void setUseColumnNamesInFindColumn(boolean arg0) {
// TODO Auto-generated method stub
}
@Override
public void setUseCompression(boolean arg0) {
// TODO Auto-generated method stub
}
@Override
public void setUseConfigs(String arg0) {
// TODO Auto-generated method stub
}
@Override
public void setUseCursorFetch(boolean arg0) {
// TODO Auto-generated method stub
}
@Override
public void setUseDirectRowUnpack(boolean arg0) {
// TODO Auto-generated method stub
}
@Override
public void setUseDynamicCharsetInfo(boolean arg0) {
// TODO Auto-generated method stub
}
@Override
public void setUseFastDateParsing(boolean arg0) {
// TODO Auto-generated method stub
}
@Override
public void setUseFastIntParsing(boolean arg0) {
// TODO Auto-generated method stub
}
@Override
public void setUseGmtMillisForDatetimes(boolean arg0) {
// TODO Auto-generated method stub
}
@Override
public void setUseHostsInPrivileges(boolean arg0) {
// TODO Auto-generated method stub
}
@Override
public void setUseInformationSchema(boolean arg0) {
// TODO Auto-generated method stub
}
@Override
public void setUseJDBCCompliantTimezoneShift(boolean arg0) {
// TODO Auto-generated method stub
}
@Override
public void setUseJvmCharsetConverters(boolean arg0) {
// TODO Auto-generated method stub
}
@Override
public void setUseLegacyDatetimeCode(boolean arg0) {
// TODO Auto-generated method stub
}
@Override
public void setUseLocalSessionState(boolean arg0) {
// TODO Auto-generated method stub
}
@Override
public void setUseLocalTransactionState(boolean arg0) {
// TODO Auto-generated method stub
}
@Override
public void setUseNanosForElapsedTime(boolean arg0) {
// TODO Auto-generated method stub
}
@Override
public void setUseOldAliasMetadataBehavior(boolean arg0) {
// TODO Auto-generated method stub
}
@Override
public void setUseOldUTF8Behavior(boolean arg0) {
// TODO Auto-generated method stub
}
@Override
public void setUseOnlyServerErrorMessages(boolean arg0) {
// TODO Auto-generated method stub
}
@Override
public void setUseReadAheadInput(boolean arg0) {
// TODO Auto-generated method stub
}
@Override
public void setUseSSL(boolean arg0) {
// TODO Auto-generated method stub
}
@Override
public void setUseSSPSCompatibleTimezoneShift(boolean arg0) {
// TODO Auto-generated method stub
}
@Override
public void setUseServerPrepStmts(boolean arg0) {
// TODO Auto-generated method stub
}
@Override
public void setUseServerPreparedStmts(boolean arg0) {
// TODO Auto-generated method stub
}
@Override
public void setUseSqlStateCodes(boolean arg0) {
// TODO Auto-generated method stub
}
@Override
public void setUseStreamLengthsInPrepStmts(boolean arg0) {
// TODO Auto-generated method stub
}
@Override
public void setUseTimezone(boolean arg0) {
// TODO Auto-generated method stub
}
@Override
public void setUseUltraDevWorkAround(boolean arg0) {
// TODO Auto-generated method stub
}
@Override
public void setUseUnbufferedInput(boolean arg0) {
// TODO Auto-generated method stub
}
@Override
public void setUseUnicode(boolean arg0) {
// TODO Auto-generated method stub
}
@Override
public void setUseUsageAdvisor(boolean arg0) {
// TODO Auto-generated method stub
}
@Override
public void setUtf8OutsideBmpExcludedColumnNamePattern(String arg0) {
// TODO Auto-generated method stub
}
@Override
public void setUtf8OutsideBmpIncludedColumnNamePattern(String arg0) {
// TODO Auto-generated method stub
}
@Override
public void setVerifyServerCertificate(boolean arg0) {
// TODO Auto-generated method stub
}
@Override
public void setYearIsDateType(boolean arg0) {
// TODO Auto-generated method stub
}
@Override
public void setZeroDateTimeBehavior(String arg0) {
// TODO Auto-generated method stub
}
@Override
public boolean useUnbufferedInput() {
// TODO Auto-generated method stub
return false;
}
@Override
public void abort(Executor arg0) throws SQLException {
// TODO Auto-generated method stub
}
@Override
public void abortInternal() throws SQLException {
// TODO Auto-generated method stub
}
@Override
public void changeUser(String arg0, String arg1) throws SQLException {
// TODO Auto-generated method stub
}
@Override
public void checkClosed() throws SQLException {
// TODO Auto-generated method stub
}
@Override
public void clearHasTriedMaster() {
// TODO Auto-generated method stub
}
@Override
public PreparedStatement clientPrepareStatement(String arg0)
throws SQLException {
// TODO Auto-generated method stub
return null;
}
@Override
public PreparedStatement clientPrepareStatement(String arg0, int arg1)
throws SQLException {
// TODO Auto-generated method stub
return null;
}
@Override
public PreparedStatement clientPrepareStatement(String arg0, int[] arg1)
throws SQLException {
// TODO Auto-generated method stub
return null;
}
@Override
public PreparedStatement clientPrepareStatement(String arg0, String[] arg1)
throws SQLException {
// TODO Auto-generated method stub
return null;
}
@Override
public PreparedStatement clientPrepareStatement(String arg0, int arg1,
int arg2) throws SQLException {
// TODO Auto-generated method stub
return null;
}
@Override
public PreparedStatement clientPrepareStatement(String arg0, int arg1,
int arg2, int arg3) throws SQLException {
// TODO Auto-generated method stub
return null;
}
@Override
public int getActiveStatementCount() {
// TODO Auto-generated method stub
return 0;
}
@Override
public int getAutoIncrementIncrement() {
// TODO Auto-generated method stub
return 0;
}
@Override
public Object getConnectionMutex() {
// TODO Auto-generated method stub
return null;
}
@Override
public String getHost() {
// TODO Auto-generated method stub
return null;
}
@Override
public long getIdleFor() {
// TODO Auto-generated method stub
return 0;
}
@Override
public Log getLog() throws SQLException {
// TODO Auto-generated method stub
return null;
}
@Override
public int getNetworkTimeout() throws SQLException {
// TODO Auto-generated method stub
return 0;
}
@Override
public Properties getProperties() {
// TODO Auto-generated method stub
return null;
}
@Override
public String getSchema() throws SQLException {
// TODO Auto-generated method stub
return null;
}
@Override
public String getServerCharacterEncoding() {
// TODO Auto-generated method stub
return null;
}
@Override
public TimeZone getServerTimezoneTZ() {
// TODO Auto-generated method stub
return null;
}
@Override
public String getStatementComment() {
// TODO Auto-generated method stub
return null;
}
@Override
public boolean hasSameProperties(Connection arg0) {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean hasTriedMaster() {
// TODO Auto-generated method stub
return false;
}
@Override
public void initializeExtension(Extension arg0) throws SQLException {
// TODO Auto-generated method stub
}
@Override
public boolean isAbonormallyLongQuery(long arg0) {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean isInGlobalTx() {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean isMasterConnection() {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean isNoBackslashEscapesSet() {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean isSameResource(Connection arg0) {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean isServerLocal() throws SQLException {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean lowerCaseTableNames() {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean parserKnowsUnicode() {
// TODO Auto-generated method stub
return false;
}
@Override
public void ping() throws SQLException {
// TODO Auto-generated method stub
}
@Override
public void reportQueryTime(long arg0) {
// TODO Auto-generated method stub
}
@Override
public void resetServerState() throws SQLException {
// TODO Auto-generated method stub
}
@Override
public PreparedStatement serverPrepareStatement(String arg0)
throws SQLException {
// TODO Auto-generated method stub
return null;
}
@Override
public PreparedStatement serverPrepareStatement(String arg0, int arg1)
throws SQLException {
// TODO Auto-generated method stub
return null;
}
@Override
public PreparedStatement serverPrepareStatement(String arg0, int[] arg1)
throws SQLException {
// TODO Auto-generated method stub
return null;
}
@Override
public PreparedStatement serverPrepareStatement(String arg0, String[] arg1)
throws SQLException {
// TODO Auto-generated method stub
return null;
}
@Override
public PreparedStatement serverPrepareStatement(String arg0, int arg1,
int arg2) throws SQLException {
// TODO Auto-generated method stub
return null;
}
@Override
public PreparedStatement serverPrepareStatement(String arg0, int arg1,
int arg2, int arg3) throws SQLException {
// TODO Auto-generated method stub
return null;
}
@Override
public void setFailedOver(boolean arg0) {
// TODO Auto-generated method stub
}
@Override
public void setInGlobalTx(boolean arg0) {
// TODO Auto-generated method stub
}
@Override
public void setNetworkTimeout(Executor arg0, int arg1) throws SQLException {
// TODO Auto-generated method stub
}
@Override
public void setPreferSlaveDuringFailover(boolean arg0) {
// TODO Auto-generated method stub
}
@Override
public void setProxy(MySQLConnection arg0) {
// TODO Auto-generated method stub
}
@Override
public void setSchema(String arg0) throws SQLException {
// TODO Auto-generated method stub
}
@Override
public void setStatementComment(String arg0) {
// TODO Auto-generated method stub
}
@Override
public void shutdownServer() throws SQLException {
// TODO Auto-generated method stub
}
@Override
public boolean supportsIsolationLevel() {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean supportsQuotedIdentifiers() {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean supportsTransactions() {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean versionMeetsMinimum(int arg0, int arg1, int arg2)
throws SQLException {
// TODO Auto-generated method stub
return false;
}
}
d 动态代理:(很重要 AOP–Aspect-Oriented Programming 核心技术)
代理对象是被代理对象的子类!
基于接口的动态代理:Proxy
如果一个类没有实现任何的接口,此种代理就不能使用了。
(1)使用要求,被代理的对象,必须实现某个接口:
代理对象: connProxy:
被代理对象: conn
代码:
原来的类:
package com.yidongxueyuan.proxy;
//原始情况: 没有使用任何的代理对象:
public class TestNoProxy implements SpringBrother{
@Override
public void dance(float money) {
if(money>1000){
System.out.println("you can dance");
}
}
@Override
public void sing(float money) {
if(money>100){
System.out.println("you can sing");
}
}
public static void main(String[] args) {
new TestNoProxy().sing(100);
new TestNoProxy().dance(100);
}
}
代理之后的类:
package com.yidongxueyuan.proxy;
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;
public class TestProxy {
//获得对象的代理类:
public static void main(String[] args) {
//使用代理的模式: 对TestNoProxy 进行增强:
final TestNoProxy noproxy = new TestNoProxy();
//在JDK当中: 获得一个代理对象: 使用Proxy 类:
/*
* loader : 类的加载器: 加载被代理的加载器: 加载字节码文件: 加载被代理类的字节码:
* interfaces: 被代理对象字节码当中所有的方法名称:
* handler: 定义了代理对象对被代理的对象 具体的代理策略:
*
* 注意:
* Proxy: JDK提供的基于接口的动态代理: 被代理的对象必须实现接口:
* Object proxy = Proxy.newProxyInstance("","",""); 返回的proxy 就是一个代理对象: 代理对象是:接口的子类对象:\
* 参数一: 类的加载器: 被代理类的加载器:
* 参数二: interfaces : 被代理类当中的所有的方法名称: clazz.getInterfaces();
* 参数三: 接口类型: InvocationHandler : 传递一个实现类: 使用匿名内部类: 定义: 定义代理对象的具体的代理策略:
* 接口当中三个参数:
* Object proxy:代理对象的引用:
* Method method: 当前被执行的方法:
* Object args[] “:封装了执行方法的参数: 参数的个数不确定, 数组类型:
*
*/
SpringBrother proxy = (SpringBrother)Proxy.newProxyInstance(noproxy.getClass().getClassLoader(), noproxy.getClass().getInterfaces(), new InvocationHandler() {
/*
* proxy :代理对象的引用:
*
* method: 当前执行的方法: 类型是Method 类型; 使用反射,对Interface当中提供的方法进行调用:
*
* args:当前执行方法的参数: 数组类型: 不同的方法参数个数可能不同:
*/
@Override
public Object invoke(Object proxy, Method method, Object[] args)
throws Throwable {
//功能性的增强:
//判断出场费:
if("sing".equals(method.getName())){
//获得参数的值:
float money = (Float) args[0];
if(money >10000){
//执行了被代理类的方法:
method.invoke(noproxy, args);
}
}
if("dance".equals(method.getName())){
//获得参数的值:
float money = (Float) args[0];
if(money >20000){
//执行了被代理类的方法:
method.invoke(noproxy, args);
}
}
return null;
}
});
//使用代理类调用方法:
proxy.sing(222000);
proxy.dance(200);
}
}
方法二:
比方法一感觉要灵活一些
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;
public class StudentDaoProxy implements InvocationHandler {
private final StudentDao stuDao = new StudentDao();
//产生一个代理对象;
public Dao getProxy(){
return (Dao)Proxy.newProxyInstance(stuDao.getClass().getClassLoader(), stuDao.getClass().getInterfaces(), this);
}
@Override
public Object invoke(Object proxy, Method method, Object[] args)
throws Throwable {
//增强:
method.invoke(stuDao, args);
return null;
}
}
调用的时候:
import com.yidongxueyuan.domain.Student;
public class TestProxy {
public static void main(String[] args) {
//获得一个代理对象;
Dao proxy = new StudentDaoProxy().getProxy();
proxy.savaStu(new Student("lisi",21));//使用代理对象调用:
}
}
动态代理实现数据源:
package com.yidongxueyuan.proxy2;
import java.io.PrintWriter;
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;
import java.sql.Connection;
import java.sql.SQLException;
import java.sql.SQLFeatureNotSupportedException;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
import java.util.logging.Logger;
import javax.sql.DataSource;
import com.yidongxueyuan.dao.JdbcUtil;
/*
* 使用动态代理: 编写数据源: 将Connection的close方法进行增强:
*/
public class MyDataSource02 implements DataSource {
private static List<Connection> pool =Collections.synchronizedList( new ArrayList());//保证了安全:
private Connection conn;
//向池子当中放链接对象:
static{
for(int i=1; i<=10 ;i++){
Connection conn = JdbcUtil.getConnection();
pool.add(conn);
}
}
@Override
public Connection getConnection() throws SQLException {
final Connection conn = pool.remove(0);//池子:Mysql 提供的conn:
//代理对象:获得conn的代理对象:
Connection proxy = (Connection)Proxy.newProxyInstance(
conn.getClass().getClassLoader(),
conn.getClass().getInterfaces(),
new InvocationHandler() {//具体的代理策略:
@Override
public Object invoke(Object proxy, Method method, Object[] args)
throws Throwable {
//对close方法进行功能性的增强;
if("close".equals(method.getName())){
//换回池子当中:
pool.add(conn);
}else{//不是close方法《 调用conn 的原来的方法:
method.invoke(conn, args);//调用方法可能有返回值;
}
return null;
}
}
);
return proxy;
}
@Override
public PrintWriter getLogWriter() throws SQLException {
// TODO Auto-generated method stub
return null;
}
@Override
public void setLogWriter(PrintWriter out) throws SQLException {
// TODO Auto-generated method stub
}
@Override
public void setLoginTimeout(int seconds) throws SQLException {
// TODO Auto-generated method stub
}
@Override
public int getLoginTimeout() throws SQLException {
// TODO Auto-generated method stub
return 0;
}
@Override
public Logger getParentLogger() throws SQLFeatureNotSupportedException {
// TODO Auto-generated method stub
return null;
}
@Override
public <T> T unwrap(Class<T> iface) throws SQLException {
// TODO Auto-generated method stub
return null;
}
@Override
public boolean isWrapperFor(Class<?> iface) throws SQLException {
// TODO Auto-generated method stub
return false;
}
@Override
public Connection getConnection(String username, String password)
throws SQLException {
// TODO Auto-generated method stub
return null;
}
}
CGLIB 基于子类的动态代理:**
**
前提:被代理类的要求
1、不能是final的
2、必须是public的
3: 必须提供无参数的构造器:
实现步骤: 导入jar包:
比如普通的JavaBean就可能没有实现任何的接口。代理类是被代理类的子类。
被代理类:
package com.yidongxueyuan.proxycglib;
public class SpringBrother {
public void sing(float money){
System.out.println("给钱唱歌");
}
public void dance(float money){
System.out.println("给钱跳舞");
}
}
代理类:
package com.yidongxueyuan.proxycglib;
import java.lang.reflect.Method;
import net.sf.cglib.proxy.Enhancer;
import net.sf.cglib.proxy.MethodInterceptor;
import net.sf.cglib.proxy.MethodProxy;
public class SpringBrotherfProxy {
//获得SpringBrother 对象的代理对象:
SpringBrother sb = new SpringBrother();//被代理的对象:
/*
* 参数:
* 参数一: 被代理对象的class 类型:
* 参数二: callBack : 回调函数:
* 不直接使用callBack 这个接口, 使用的子接口 : MethodInterceptor
*/
public SpringBrother getProxy(){
SpringBrother proxy =(SpringBrother) Enhancer.create(sb.getClass()), new MethodInterceptor() {
/*
* 参数一: proxy 代理对象的引用: (不用)
* 参数二; method 被执行的方法:
* 参数三: 方法当中的参数:
* 参数四: 代理方法的应用:(不用)
*/
@Override
public Object intercept(Object proxy, Method method, Object[] arg2,
MethodProxy arg3) throws Throwable {
//功能性的增强:
method.invoke(sb, arg2);
return null;
}
});
return proxy;
}
}
四、开源数据源的使用:(很重要,简单)
开源数据源: DBCP C3P0 JNDI。 DBCP和C3P0都可以直接通过编码的形式配置数据源, 这样的实现方式是硬编码的方式,不利于日后的维护和扩展,所以不推荐直接编码的方式,而是采用配置文件的方式。 实现可配置,利于维护。
1、DBCP:
Apache组织开发的。
DBCP:DataBase Connection Pool,对数据源的一种实现。
a、拷贝jar包: dbcp pool包,两个jar包
b、编写配置文件: 配置文件copy
c、使用即可: 编写工具类:
实现步骤一:
Copy jar 包: 两个: 一个是连接池子的jar包: 一个是dbcp的jar包:
实现的步骤二:
配置文件的准备: 配置文件是dbcpconfig.properties文件
#连接设置
driverClassName=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/test
username=root
password=sorry
#<!-- 初始化连接 -->
initialSize=10
#最大连接数量
maxActive=50
#<!-- 最大空闲连接 -->
maxIdle=20
#<!-- 最小空闲连接 -->
minIdle=5
#<!-- 超时等待时间以毫秒为单位 6000毫秒/1000等于60秒 -->
maxWait=60000
#JDBC驱动建立连接时附带的连接属性属性的格式必须为这样:[属性名=property;]
#注意:"user" 与 "password" 两个属性会被明确地传递,因此这里不需要包含他们。
connectionProperties=useUnicode=true;characterEncoding=utf8
#指定由连接池所创建的连接的自动提交(auto-commit)状态。
defaultAutoCommit=true
#driver default 指定由连接池所创建的连接的只读(read-only)状态。
#如果没有设置该值,则“setReadOnly”方法将不被调用。(某些驱动并不支持只读模式,如:Informix)
defaultReadOnly=
#driver default 指定由连接池所创建的连接的事务级别(TransactionIsolation)。
#可用值为下列之一:(详情可见javadoc。)NONE,READ_UNCOMMITTED, READ_COMMITTED, REPEATABLE_READ,
SERIALIZABLE
defaultTransactionIsolation=REPEATABLE_READ
实现步骤三: 工具类的编写:
/*
* 使用DBCP数据源: 获得一个连接对象:
* getConnection(); //从池子当中获得了一个连接对象:
* 调用close方法 将conn 归还到池子当中:
*/
public class DBCPUtils {
public static DataSource ds;
//读取外部的配置文件:
static{
try {
//获得类的加载器:
ClassLoader loader = DBCPUtils.class.getClassLoader();
//输入流:
InputStream in = loader.getResourceAsStream("dbcpconfig.properties");
System.out.println(in);
//将流当中的数据加载到Property集合当中:
Properties prop= new Properties();
//in将集合填充:
prop.load(in);
// prop有内容:
ds = BasicDataSourceFactory.createDataSource(prop);
} catch (Exception e) {
e.printStackTrace();
}
}
// 获得一个数据源: 从池子当中获得链接:
public static Connection getConnection() throws SQLException{
Connection conn = ds.getConnection();
return conn;
}
//提供一个数据源:
public DataSource getDataSource(){
return ds;
}
public static void main(String[] args) throws SQLException {
Connection connection = getConnection();
System.out.println(connection);
}
}
2、C3P0:
开源数据源的实现。
(1)实现步骤: copy jar包:
(2)编写配置文件:
注意: A:必须放在src下。类的加载器默认从类的加载器当中读取配置文件。
B:配置文件的名称必须: c3p0-config.xml
(3)编写一个工具类: 获得链接对象:
实现步骤一: copy jar包:
实现步骤二: 编写配置c3p0配置文件:
<?xml version="1.0" encoding="UTF-8"?>
<c3p0-config>
<default-config>
<property name="jdbcUrl">jdbc:mysql://localhost:3306/day02</property>
<property name="driverClass">com.mysql.jdbc.Driver</property>
<property name="user">root</property>
<property name="password">root</property>
<property name="acquireIncrement">3</property>
<property name="initialPoolSize">10</property>
<property name="minPoolSize">2</property>
<property name="maxPoolSize">10</property>
</default-config>
<named-config name="oracle-config">
<property name="jdbcUrl">jdbc:mysql://localhost:3306/mydb1</property>
<property name="driverClass">com.mysql.jdbc.Driver</property>
<property name="user">root</property>
<property name="password">123</property>
<property name="acquireIncrement">3</property>
<property name="initialPoolSize">10</property>
<property name="minPoolSize">2</property>
<property name="maxPoolSize">10</property>
</named-config>
</c3p0-config>
实现步骤三: 编写工具类: 获得链接池子当中的链接对象:
public class C3P0Utils{
//创建对象的时候,自动从类路径当中获得读取配置文件。 读取到的配置文件的: default-config标签当中的内容:
private static ComboPooledDataSource ds = new ComboPooledDataSource();
// private static ComboPooledDataSource ds = new ComboPooledDataSource("day15");
public static DataSource getDataSource(){
return ds;
}
//提供一个连接方法:
public static Connection getConnection(){
try {
return ds.getConnection();
} catch (SQLException e) {
throw new RuntimeException(e);
}
}
}
3、更接近实际开发:JNDI管理数据源
JNDI:Java Naming and Directory Interface。属于JavaEE技术之一,目的模仿window系统中的注册表。
a、在服务器中注册JNDI数据源
1、拷贝数据库的驱动到Tomcat\lib目录下
2、在web应用的META-INF目录下建立一个名称为context.xml的配置文件
3、获取JNDI容器中的资源
总结: JNDI使用:
(1)copy 数据库的驱动到tomcat的lib下。
(2)编写配置文件: 配置文件名称必须context.xml
编写的配置文件: 必须放在当前的上下文环境。
直接将配置文件放在WEB/INF下。
(3)编写一个类,从JNDI容器当中获得具体的实例:
编写的实体类,必须依赖服务器,直接运行主方法是不能获得数据源的。直接运行主方法没有依赖任何的服务器。
package com.yidongxueyuan.utils;
import java.sql.Connection;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.sql.DataSource;
/*
* 使用JNDI 容器 获得链接对象:
*/
public class JNDIUtil {
public static Connection getConnection() throws Exception{
Context initContext = new InitialContext();
// Context envContext = (Context)initContext.lookup("java:/comp/env");//实例目录:不同的服务器不一样:
// DataSource ds = (DataSource)envContext.lookup("jdbc/test");
DataSource ds = (DataSource)initContext.lookup("java:/comp/env/jdbc/test");
Connection conn = ds.getConnection();
return conn;
}
}