Class MySQL8DateTimeSqlTypeFilter
java.lang.Object
javax.management.NotificationBroadcasterSupport
com.alibaba.druid.filter.FilterAdapter
com.alibaba.druid.filter.mysql8datetime.MySQL8DateTimeSqlTypeFilter
- All Implemented Interfaces:
Filter,Wrapper,NotificationBroadcaster,NotificationEmitter
针对mysql jdbc 8.0.23及以上版本,如果调用方没有使用orm框架,而是直接调用ResultSet的getObject方法,则针对DATETIME类型的字段,得到的对象从TimeStamp类型变成了LocalDateTime类型,导致调用方出现类型转换异常
通过Filter控制将对象类型转换成原来的类型
- Author:
- lizongbo
- See Also:
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionstatic ObjectReplaces a LocalDateTime object with its equivalent Timestamp object.resultSet_getMetaData(FilterChain chain, ResultSetProxy resultSet) Retrieves the metadata for the result set, including information about the columns and their properties.resultSet_getObject(FilterChain chain, ResultSetProxy result, int columnIndex) 针对mysql jdbc 8.0.23及以上版本,通过该方法控制将对象类型转换成原来的类型resultSet_getObject(FilterChain chain, ResultSetProxy result, String columnLabel) 针对mysql jdbc 8.0.23及以上版本,通过该方法控制将对象类型转换成原来的类型Methods inherited from class com.alibaba.druid.filter.FilterAdapter
callableStatement_getArray, callableStatement_getArray, callableStatement_getBigDecimal, callableStatement_getBigDecimal, callableStatement_getBigDecimal, callableStatement_getBlob, callableStatement_getBlob, callableStatement_getBoolean, callableStatement_getBoolean, callableStatement_getByte, callableStatement_getByte, callableStatement_getBytes, callableStatement_getBytes, callableStatement_getCharacterStream, callableStatement_getCharacterStream, callableStatement_getClob, callableStatement_getClob, callableStatement_getDate, callableStatement_getDate, callableStatement_getDate, callableStatement_getDate, callableStatement_getDouble, callableStatement_getDouble, callableStatement_getFloat, callableStatement_getFloat, callableStatement_getInt, callableStatement_getInt, callableStatement_getLong, callableStatement_getLong, callableStatement_getNCharacterStream, callableStatement_getNCharacterStream, callableStatement_getNClob, callableStatement_getNClob, callableStatement_getNString, callableStatement_getNString, callableStatement_getObject, callableStatement_getObject, callableStatement_getObject, callableStatement_getObject, callableStatement_getRef, callableStatement_getRef, callableStatement_getRowId, callableStatement_getRowId, callableStatement_getShort, callableStatement_getShort, callableStatement_getSQLXML, callableStatement_getSQLXML, callableStatement_getString, callableStatement_getString, callableStatement_getTime, callableStatement_getTime, callableStatement_getTime, callableStatement_getTime, callableStatement_getTimestamp, callableStatement_getTimestamp, callableStatement_getTimestamp, callableStatement_getTimestamp, callableStatement_getURL, callableStatement_getURL, callableStatement_registerOutParameter, callableStatement_registerOutParameter, callableStatement_registerOutParameter, callableStatement_registerOutParameter, callableStatement_registerOutParameter, callableStatement_registerOutParameter, callableStatement_setAsciiStream, callableStatement_setAsciiStream, callableStatement_setAsciiStream, callableStatement_setBigDecimal, callableStatement_setBinaryStream, callableStatement_setBinaryStream, callableStatement_setBinaryStream, callableStatement_setBlob, callableStatement_setBlob, callableStatement_setBlob, callableStatement_setBoolean, callableStatement_setByte, callableStatement_setBytes, callableStatement_setCharacterStream, callableStatement_setCharacterStream, callableStatement_setCharacterStream, callableStatement_setClob, callableStatement_setClob, callableStatement_setClob, callableStatement_setDate, callableStatement_setDate, callableStatement_setDouble, callableStatement_setFloat, callableStatement_setInt, callableStatement_setLong, callableStatement_setNCharacterStream, callableStatement_setNCharacterStream, callableStatement_setNClob, callableStatement_setNClob, callableStatement_setNClob, callableStatement_setNString, callableStatement_setNull, callableStatement_setNull, callableStatement_setObject, callableStatement_setObject, callableStatement_setObject, callableStatement_setRowId, callableStatement_setShort, callableStatement_setSQLXML, callableStatement_setString, callableStatement_setTime, callableStatement_setTime, callableStatement_setTimestamp, callableStatement_setTimestamp, callableStatement_setURL, callableStatement_wasNull, clob_free, clob_getAsciiStream, clob_getCharacterStream, clob_getCharacterStream, clob_getSubString, clob_length, clob_position, clob_position, clob_setAsciiStream, clob_setCharacterStream, clob_setString, clob_setString, clob_truncate, configFromProperties, connection_abort, connection_clearWarnings, connection_close, connection_commit, connection_connect, connection_createArrayOf, connection_createBlob, connection_createClob, connection_createNClob, connection_createSQLXML, connection_createStatement, connection_createStatement, connection_createStatement, connection_createStruct, connection_getAutoCommit, connection_getCatalog, connection_getClientInfo, connection_getClientInfo, connection_getHoldability, connection_getMetaData, connection_getNetworkTimeout, connection_getSchema, connection_getTransactionIsolation, connection_getTypeMap, connection_getWarnings, connection_isClosed, connection_isReadOnly, connection_isValid, connection_nativeSQL, connection_prepareCall, connection_prepareCall, connection_prepareCall, connection_prepareStatement, connection_prepareStatement, connection_prepareStatement, connection_prepareStatement, connection_prepareStatement, connection_prepareStatement, connection_releaseSavepoint, connection_rollback, connection_rollback, connection_setAutoCommit, connection_setCatalog, connection_setClientInfo, connection_setClientInfo, connection_setHoldability, connection_setNetworkTimeout, connection_setReadOnly, connection_setSavepoint, connection_setSavepoint, connection_setSchema, connection_setTransactionIsolation, connection_setTypeMap, dataSource_getConnection, dataSource_releaseConnection, destroy, init, isWrapperFor, isWrapperFor, preparedStatement_addBatch, preparedStatement_clearParameters, preparedStatement_execute, preparedStatement_executeQuery, preparedStatement_executeUpdate, preparedStatement_getMetaData, preparedStatement_getParameterMetaData, preparedStatement_setArray, preparedStatement_setAsciiStream, preparedStatement_setAsciiStream, preparedStatement_setAsciiStream, preparedStatement_setBigDecimal, preparedStatement_setBinaryStream, preparedStatement_setBinaryStream, preparedStatement_setBinaryStream, preparedStatement_setBlob, preparedStatement_setBlob, preparedStatement_setBlob, preparedStatement_setBoolean, preparedStatement_setByte, preparedStatement_setBytes, preparedStatement_setCharacterStream, preparedStatement_setCharacterStream, preparedStatement_setCharacterStream, preparedStatement_setClob, preparedStatement_setClob, preparedStatement_setClob, preparedStatement_setDate, preparedStatement_setDate, preparedStatement_setDouble, preparedStatement_setFloat, preparedStatement_setInt, preparedStatement_setLong, preparedStatement_setNCharacterStream, preparedStatement_setNCharacterStream, preparedStatement_setNClob, preparedStatement_setNClob, preparedStatement_setNClob, preparedStatement_setNString, preparedStatement_setNull, preparedStatement_setNull, preparedStatement_setObject, preparedStatement_setObject, preparedStatement_setObject, preparedStatement_setRef, preparedStatement_setRowId, preparedStatement_setShort, preparedStatement_setSQLXML, preparedStatement_setString, preparedStatement_setTime, preparedStatement_setTime, preparedStatement_setTimestamp, preparedStatement_setTimestamp, preparedStatement_setUnicodeStream, preparedStatement_setURL, resultSet_absolute, resultSet_afterLast, resultSet_beforeFirst, resultSet_cancelRowUpdates, resultSet_clearWarnings, resultSet_close, resultSet_deleteRow, resultSet_findColumn, resultSet_first, resultSet_getArray, resultSet_getArray, resultSet_getAsciiStream, resultSet_getAsciiStream, resultSet_getBigDecimal, resultSet_getBigDecimal, resultSet_getBigDecimal, resultSet_getBigDecimal, resultSet_getBinaryStream, resultSet_getBinaryStream, resultSet_getBlob, resultSet_getBlob, resultSet_getBoolean, resultSet_getBoolean, resultSet_getByte, resultSet_getByte, resultSet_getBytes, resultSet_getBytes, resultSet_getCharacterStream, resultSet_getCharacterStream, resultSet_getClob, resultSet_getClob, resultSet_getConcurrency, resultSet_getCursorName, resultSet_getDate, resultSet_getDate, resultSet_getDate, resultSet_getDate, resultSet_getDouble, resultSet_getDouble, resultSet_getFetchDirection, resultSet_getFetchSize, resultSet_getFloat, resultSet_getFloat, resultSet_getHoldability, resultSet_getInt, resultSet_getInt, resultSet_getLong, resultSet_getLong, resultSet_getNCharacterStream, resultSet_getNCharacterStream, resultSet_getNClob, resultSet_getNClob, resultSet_getNString, resultSet_getNString, resultSet_getObject, resultSet_getObject, resultSet_getObject, resultSet_getObject, resultSet_getRef, resultSet_getRef, resultSet_getRow, resultSet_getRowId, resultSet_getRowId, resultSet_getShort, resultSet_getShort, resultSet_getSQLXML, resultSet_getSQLXML, resultSet_getStatement, resultSet_getString, resultSet_getString, resultSet_getTime, resultSet_getTime, resultSet_getTime, resultSet_getTime, resultSet_getTimestamp, resultSet_getTimestamp, resultSet_getTimestamp, resultSet_getTimestamp, resultSet_getType, resultSet_getUnicodeStream, resultSet_getUnicodeStream, resultSet_getURL, resultSet_getURL, resultSet_getWarnings, resultSet_insertRow, resultSet_isAfterLast, resultSet_isBeforeFirst, resultSet_isClosed, resultSet_isFirst, resultSet_isLast, resultSet_last, resultSet_moveToCurrentRow, resultSet_moveToInsertRow, resultSet_next, resultSet_previous, resultSet_refreshRow, resultSet_relative, resultSet_rowDeleted, resultSet_rowInserted, resultSet_rowUpdated, resultSet_setFetchDirection, resultSet_setFetchSize, resultSet_updateArray, resultSet_updateArray, resultSet_updateAsciiStream, resultSet_updateAsciiStream, resultSet_updateAsciiStream, resultSet_updateAsciiStream, resultSet_updateAsciiStream, resultSet_updateAsciiStream, resultSet_updateBigDecimal, resultSet_updateBigDecimal, resultSet_updateBinaryStream, resultSet_updateBinaryStream, resultSet_updateBinaryStream, resultSet_updateBinaryStream, resultSet_updateBinaryStream, resultSet_updateBinaryStream, resultSet_updateBlob, resultSet_updateBlob, resultSet_updateBlob, resultSet_updateBlob, resultSet_updateBlob, resultSet_updateBlob, resultSet_updateBoolean, resultSet_updateBoolean, resultSet_updateByte, resultSet_updateByte, resultSet_updateBytes, resultSet_updateBytes, resultSet_updateCharacterStream, resultSet_updateCharacterStream, resultSet_updateCharacterStream, resultSet_updateCharacterStream, resultSet_updateCharacterStream, resultSet_updateCharacterStream, resultSet_updateClob, resultSet_updateClob, resultSet_updateClob, resultSet_updateClob, resultSet_updateClob, resultSet_updateClob, resultSet_updateDate, resultSet_updateDate, resultSet_updateDouble, resultSet_updateDouble, resultSet_updateFloat, resultSet_updateFloat, resultSet_updateInt, resultSet_updateInt, resultSet_updateLong, resultSet_updateLong, resultSet_updateNCharacterStream, resultSet_updateNCharacterStream, resultSet_updateNCharacterStream, resultSet_updateNCharacterStream, resultSet_updateNClob, resultSet_updateNClob, resultSet_updateNClob, resultSet_updateNClob, resultSet_updateNClob, resultSet_updateNClob, resultSet_updateNString, resultSet_updateNString, resultSet_updateNull, resultSet_updateNull, resultSet_updateObject, resultSet_updateObject, resultSet_updateObject, resultSet_updateObject, resultSet_updateRef, resultSet_updateRef, resultSet_updateRow, resultSet_updateRowId, resultSet_updateRowId, resultSet_updateShort, resultSet_updateShort, resultSet_updateSQLXML, resultSet_updateSQLXML, resultSet_updateString, resultSet_updateString, resultSet_updateTime, resultSet_updateTime, resultSet_updateTimestamp, resultSet_updateTimestamp, resultSet_wasNull, resultSetMetaData_getCatalogName, resultSetMetaData_getColumnClassName, resultSetMetaData_getColumnCount, resultSetMetaData_getColumnDisplaySize, resultSetMetaData_getColumnLabel, resultSetMetaData_getColumnName, resultSetMetaData_getColumnType, resultSetMetaData_getColumnTypeName, resultSetMetaData_getPrecision, resultSetMetaData_getScale, resultSetMetaData_getSchemaName, resultSetMetaData_getTableName, resultSetMetaData_isAutoIncrement, resultSetMetaData_isCaseSensitive, resultSetMetaData_isCurrency, resultSetMetaData_isDefinitelyWritable, resultSetMetaData_isNullable, resultSetMetaData_isReadOnly, resultSetMetaData_isSearchable, resultSetMetaData_isSigned, resultSetMetaData_isWritable, statement_addBatch, statement_cancel, statement_clearBatch, statement_clearWarnings, statement_close, statement_execute, statement_execute, statement_execute, statement_execute, statement_executeBatch, statement_executeQuery, statement_executeUpdate, statement_executeUpdate, statement_executeUpdate, statement_executeUpdate, statement_getConnection, statement_getFetchDirection, statement_getFetchSize, statement_getGeneratedKeys, statement_getMaxFieldSize, statement_getMaxRows, statement_getMoreResults, statement_getMoreResults, statement_getQueryTimeout, statement_getResultSet, statement_getResultSetConcurrency, statement_getResultSetHoldability, statement_getResultSetType, statement_getUpdateCount, statement_getWarnings, statement_isClosed, statement_isPoolable, statement_setCursorName, statement_setEscapeProcessing, statement_setFetchDirection, statement_setFetchSize, statement_setMaxFieldSize, statement_setMaxRows, statement_setPoolable, statement_setQueryTimeout, unwrap, unwrapMethods inherited from class javax.management.NotificationBroadcasterSupport
addNotificationListener, getNotificationInfo, handleNotification, removeNotificationListener, removeNotificationListener, sendNotification
-
Constructor Details
-
MySQL8DateTimeSqlTypeFilter
public MySQL8DateTimeSqlTypeFilter()
-
-
Method Details
-
resultSet_getObject
public Object resultSet_getObject(FilterChain chain, ResultSetProxy result, int columnIndex) throws SQLException 针对mysql jdbc 8.0.23及以上版本,通过该方法控制将对象类型转换成原来的类型- Specified by:
resultSet_getObjectin interfaceFilter- Overrides:
resultSet_getObjectin classFilterAdapter- Parameters:
chain- chain the FilterChain object that represents the filter chainresult- the ResultSetProxy object that represents the result setcolumnIndex- the index of the column to retrieve- Returns:
- an Object holding the column value, or
nullif the value is SQL NULL - Throws:
SQLException- if a database access error occurs or the columnIndex is invalid- See Also:
-
resultSet_getObject
public Object resultSet_getObject(FilterChain chain, ResultSetProxy result, String columnLabel) throws SQLException 针对mysql jdbc 8.0.23及以上版本,通过该方法控制将对象类型转换成原来的类型- Specified by:
resultSet_getObjectin interfaceFilter- Overrides:
resultSet_getObjectin classFilterAdapter- Parameters:
chain- chain the FilterChain object that represents the filter chainresult- the ResultSetProxy object that represents the result setcolumnLabel- the label of the column to retrieve- Returns:
- an Object holding the column value, or
nullif the value is SQL NULL - Throws:
SQLException- if a database access error occurs or the columnLabel is invalid- See Also:
-
getObjectReplaceLocalDateTime
Replaces a LocalDateTime object with its equivalent Timestamp object. If the input object is not an instance of LocalDateTime, it is returned as is. This method is specifically designed to handle cases where upgrading to MySQL JDBC 8.0.23 or above requires converting LocalDateTime objects back to the older compatible type.- Parameters:
obj- the object to be checked and possibly replaced- Returns:
- the replaced object if it is a LocalDateTime, or the original object otherwise
-
resultSet_getMetaData
public ResultSetMetaData resultSet_getMetaData(FilterChain chain, ResultSetProxy resultSet) throws SQLException Retrieves the metadata for the result set, including information about the columns and their properties. This method wraps the original result set metadata with a custom implementation that handles MySQL 8.0.23 or above compatibility for LocalDateTime objects.- Specified by:
resultSet_getMetaDatain interfaceFilter- Overrides:
resultSet_getMetaDatain classFilterAdapter- Parameters:
chain- the FilterChain object that represents the filter chainresultSet- the ResultSetProxy object that represents the result set- Returns:
- a ResultSetMetaData object containing the metadata for the result set
- Throws:
SQLException- if a database access error occurs
-