mybatisPlus使用LocalDateTime轉化異常

1.問題的出現

mybatisPlus版本3.2.0
3.0以上默認時間爲LocalDateTime ,在使用sql查詢的時候會出現

druid版本

 		<dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid-spring-boot-starter</artifactId>
            <version>1.1.9</version>
        </dependency>

    @ApiModelProperty(value = "添加時間")
    private LocalDateTime createTime;

    /**
    * 更新時間
    */
    @ApiModelProperty(value = "更新時間")
    private LocalDateTime updateTime;

查詢最後報錯

org.springframework.dao.InvalidDataAccessApiUsageException: Error attempting to get column 'create_time' from result set.  Cause: java.sql.SQLFeatureNotSupportedException
; null; nested exception is java.sql.SQLFeatureNotSupportedException

2.解決

解決方式一:

在映射的result裏面或者resultMap裏面配置

      @Result(column="create_time", property="createTime",javaType = 	
      LocalDateTime.class,jdbcType = JdbcType.DATE),
      @Result(column="update_time", property="updateTime",javaType = 
      LocalDateTime.class,jdbcType = JdbcType.DATE),

失敗

解決辦法二:


@Result(column="create_time", property="createTime",javaType = LocalDateTime.class,
			jdbcType = JdbcType.DATE,typeHandler = MyLocalDateTimeTypeHandler.class),
@Result(column="update_time", property="updateTime",javaType = LocalDateTime.class,
			jdbcType = JdbcType.DATE,typeHandler = MyLocalDateTimeTypeHandler.class),

這裏的MyLocalDateTimeTypeHandler是自己的轉換類,繼承的是mybatis的轉換類

public class MyLocalDateTimeTypeHandler extends LocalDateTimeTypeHandler {

    @Override
    public LocalDateTime getResult(ResultSet rs, String columnName) throws SQLException {
        Object object = rs.getObject(columnName);
        System.out.println(object);
        if(object instanceof java.sql.Timestamp){//在這裏強行轉換,將sql的時間轉換爲LocalDateTime 
            return LocalDateTime//可以根據自己的需要進行轉化
                    .ofInstant(((Timestamp)object).toInstant(), ZoneOffset.ofHours(0));
        }
        return super.getResult(rs, columnName);
    }
}

解決辦法可行

解決辦法3:

在網上搜索的半天,發現是druid的問題,於是把源碼拉下來了,自己打包

		<dependency>//自己打包的版本
            <groupId>com.git</groupId>
            <artifactId>druid-spring-boot-starter</artifactId>
            <version>1.1.20</version>
        </dependency>

        <dependency>
            <groupId>com.git</groupId>
            <artifactId>druid</artifactId>
            <version>1.1.20</version>
        </dependency>

剛準備改進一下,進行rq發現問題已經解決,
於是將版本切換到1.1.20,發現臥槽,還真的有,問題解決

僅此記錄。
本文爲作者原創,轉載請申請!

發佈了44 篇原創文章 · 獲贊 13 · 訪問量 9691
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章