shardingJdbc的LocalDateTime问题

今天在搭建ShardingJdbc模块的时候遇到了一个类型转换的问题,问题如下:
在这里插入图片描述
在结果集的映射的时候报错了。在网上搜索的解决方案是更新mybatis的版本或者是什么更新Druid的版本,都尝试了,目前使用的版本如下:

  <dependency>
     <groupId>org.apache.shardingsphere</groupId>
       <artifactId>sharding-jdbc-spring-boot-starter</artifactId>
       <version>4.1.1</version>
       <exclusions>
           <exclusion>
               <groupId>com.google.guava</groupId>
               <artifactId>guava</artifactId>
           </exclusion>
       </exclusions>
   </dependency>
   <dependency>
  	 <groupId>com.alibaba</groupId>
      <artifactId>druid-spring-boot-starter</artifactId>
      <version>1.1.21</version>
   </dependency>

然并卵

后面只能自己去看什么原因了。Debug追踪后发现问题出来的LocalDateTimeTypeHandler里面,如图:
在这里插入图片描述
但是在ShardingResultSet并没有实现 getObject(String columnLabel, Class<T> type)这个方法,是直接抛出异常的
在这里插入图片描述
所以没办法,只能自己去实现typeHandler的了,实现如下:

/**
 * @description: LocalDateTime是为了解决shardingResultSet转换LocalDateTime的问题
 * @author: xiao7
 * @date: 2021/5/27 10:59
 */
@Component
@MappedTypes(LocalDateTime.class)
@MappedJdbcTypes(value = JdbcType.DATE, includeNullJdbcType = true)
public class LocalDateTimeTypeHandler extends BaseTypeHandler<LocalDateTime> {

    @Override
    public void setNonNullParameter(PreparedStatement ps, int i, LocalDateTime parameter, JdbcType jdbcType)
            throws SQLException {
        ps.setObject(i, parameter);
    }

    @Override
    public LocalDateTime getNullableResult(ResultSet rs, String columnName) throws SQLException {
        return Convert.toLocalDateTime(rs.getObject(columnName));
    }

    @Override
    public LocalDateTime getNullableResult(ResultSet rs, int columnIndex) throws SQLException {
        return Convert.toLocalDateTime(rs.getObject(columnIndex));
    }

    @Override
    public LocalDateTime getNullableResult(CallableStatement cs, int columnIndex) throws SQLException {
        return Convert.toLocalDateTime(cs.getObject(columnIndex));
    }
}

有没有新的影响也还不知道,应该没有。反正是可以了
在这里插入图片描述

在这里插入图片描述

  • 10
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值