【MybatisPlus】数据库的datetime类型字段为空的时候,报错空指针?

事情是这样的,我今天本来要演示系统,就去前端同学的页面上点一点。不小心点到了其他同事编写的服务,然后界面就报错了。这给我吓得,这还能演示吗这。然后,我就去服务器查看了一下日志,发现了如下景象:

【MybatisPlus】数据库的datetime类型字段为空的时候,报错空指针?

 

 

看到这景象啊,我第一件事情就是查看堆栈,也没找到自己写的代码啊,好好的咋就报错了。

于是,我第一件事情,复制报错信息找到百度网站。复制粘贴,往上一怼!好家伙,竟然找不到一个和我症状一样的。

那我只能自己处理了。

 

二、问题定位

从堆栈信息定位一个问题的位置其实是很简单的,但是要明白为什么错误,还是得多看一会儿的。

我定睛看了一阵子,发现了

 at org.apache.ibatis.type.LocalDateTimeTypeHandler.getNullableResult(LocalDateTimeTypeHandler.java:38)

 

这一行报错,于是我就跟进源码查看。这个源码,写的也简单。

1 /** 2 * Copyright 2009-2019 the original author or authors. 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 package org.apache.ibatis.type; 17 18 import java.sql.CallableStatement; 19 import java.sql.PreparedStatement; 20 import java.sql.ResultSet; 21 import java.sql.SQLException; 22 import java.time.LocalDateTime; 23 24 /** 25 * @since 3.4.5 26 * @author Tomas Rohovsky 27 */ 28 public class LocalDateTimeTypeHandler extends BaseTypeHandler<LocalDateTime> { 29 30 @Override 31 public void setNonNullParameter(PreparedStatement ps, int i, LocalDateTime parameter, JdbcType jdbcType) 32 throws SQLException { 33 ps.setObject(i, parameter); 34 } 35 36 @Override 37 public LocalDateTime getNullableResult(ResultSet rs, String columnName) throws SQLException { 38 return rs.getObject(columnName, LocalDateTime.class); 39 } 40 41 @Override 42 public LocalDateTime getNullableResult(ResultSet rs, int columnIndex) throws SQLException { 43 return rs.getObject(columnIndex, LocalDateTime.class); 44 } 45 46 @Override 47 public LocalDateTime getNullableResult(CallableStatement cs, int columnIndex) throws SQLException { 48 return cs.getObject(columnIndex, LocalDateTime.class); 49 } 50 }

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zyjwdf.html