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
public class MySQL8DateTimeSqlTypeFilter extends FilterAdapter
针对mysql jdbc 8.0.23及以上版本,如果调用方没有使用orm框架,而是直接调用ResultSet的getObject方法,则针对DATETIME类型的字段,得到的对象从TimeStamp类型变成了LocalDateTime类型,导致调用方出现类型转换异常 通过Filter控制将对象类型转换成原来的类型- Author:
- lizongbo
- See Also:
- MySQL 8.0.23 更新说明
-
-
Constructor Summary
Constructors Constructor Description MySQL8DateTimeSqlTypeFilter()
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description static ObjectgetObjectReplaceLocalDateTime(Object obj)Replaces a LocalDateTime object with its equivalent Timestamp object.ResultSetMetaDataresultSet_getMetaData(FilterChain chain, ResultSetProxy resultSet)Retrieves the metadata for the result set, including information about the columns and their properties.ObjectresultSet_getObject(FilterChain chain, ResultSetProxy result, int columnIndex)针对mysql jdbc 8.0.23及以上版本,通过该方法控制将对象类型转换成原来的类型ObjectresultSet_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, unwrap
-
Methods inherited from class javax.management.NotificationBroadcasterSupport
addNotificationListener, getNotificationInfo, handleNotification, removeNotificationListener, removeNotificationListener, sendNotification
-
-
-
-
Method Detail
-
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(int)
-
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:
ResultSet.getObject(String)
-
getObjectReplaceLocalDateTime
public static Object getObjectReplaceLocalDateTime(Object obj)
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
-
-