异常全文:
java.lang.AbstractMethodError: Method oracle/jdbc/driver/OracleResultSetImpl.getObject(Ljava/lang/String;Ljava/lang/Class;)Ljava/lang/Object; is abstract
at oracle.jdbc.driver.OracleResultSetImpl.getObject(OracleResultSetImpl.java) ~[ojdbc6-11.2.0.3.jar:11.2.0.3.0]
at com.zaxxer.hikari.pool.HikariProxyResultSet.getObject(HikariProxyResultSet.java) ~[HikariCP-3.4.5.jar:na]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_241]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_241]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_241]
at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_241]
at org.apache.ibatis.logging.jdbc.ResultSetLogger.invoke(ResultSetLogger.java:69) ~[mybatis-3.5.5.jar:3.5.5]
at com.sun.proxy.$Proxy159.getObject(Unknown Source) ~[na:na]
at org.apache.ibatis.type.LocalDateTimeTypeHandler.getNullableResult(LocalDateTimeTypeHandler.java:38) ~[mybatis-3.5.5.jar:3.5.5]
at org.apache.ibatis.type.LocalDateTimeTypeHandler.getNullableResult(LocalDateTimeTypeHandler.java:28) ~[mybatis-3.5.5.jar:3.5.5]
at org.apache.ibatis.type.BaseTypeHandler.getResult(BaseTypeHandler.java:85) ~[mybatis-3.5.5.jar:3.5.5]
at org.apache.ibatis.executor.resultset.DefaultResultSetHandler.applyAutomaticMappings(DefaultResultSetHandler.java:560) ~[mybatis-3.5.5.jar:3.5.5]
at org.apache.ibatis.executor.resultset.DefaultResultSetHandler.getRowValue(DefaultResultSetHandler.java:402) ~[mybatis-3.5.5.jar:3.5.5]
at org.apache.ibatis.executor.resultset.DefaultResultSetHandler.handleRowValuesForSimpleResultMap(DefaultResultSetHandler.java:354) ~[mybatis-3.5.5.jar:3.5.5]
at org.apache.ibatis.executor.resultset.DefaultResultSetHandler.handleRowValues(DefaultResultSetHandler.java:328) ~[mybatis-3.5.5.jar:3.5.5]
at org.apache.ibatis.executor.resultset.DefaultResultSetHandler.handleResultSet(DefaultResultSetHandler.java:301) ~[mybatis-3.5.5.jar:3.5.5]
at org.apache.ibatis.executor.resultset.Defaul
最近开发项目得时候,遇到一个很让人头疼得问题
用PostMan测试Controller方法得时候一直给我报上面那个错误
在网上找了半天的解决方法也没用,大多数人给出的方法就是oralce驱动包有问题,版本过高等等。。。
试过了各种方法还是没解决。
试了很久终于找到方法所以写个博客记录一下
-------------------------------------------正文---------------------------------------
原因:
因为我的三层是MybatisPlus逆向工程自动生成的,默认时间格式是LocalDateTime而不是Date
我们在做用户信息查询的时候,查询出来的时间都是时间戳的格式,系统无法自动转换为LocalDateTime格式,就造成了上面的那个错误。
解决方法:
自定义一个Mybatis日期转换器,继承 LocalDateTimeTypeHandler。
@Component
public class LocalDateTimeConvertor extends LocalDateTimeTypeHandler {
@Override
public void setNonNullParameter(PreparedStatement ps, int i, LocalDateTime parameter, JdbcType jdbcType) throws SQLException {
Timestamp timestamp = Timestamp.valueOf(parameter);
ps.setObject(i, timestamp);
}
@Override
public LocalDateTime getNullableResult(ResultSet rs, String columnName) throws SQLException {
Timestamp timestamp = rs.getTimestamp(columnName);
if (timestamp == null) {
return null;
}
return timestamp.toLocalDateTime();
}
}