mybatis與mysql數據庫交互時使用LocalDate類等


在做項目的時候,遇到數據庫中想存入字段類型為Date類並且只存入yyyy-MM-dd這種只有日期的格式,但是java.util.date和java.sql.date都需要轉換,不是特別的方便.然后后來學習過java8中關於日期的新的類LocalDate,這個可以直接返回一個日期格式為yyyy-MM-dd的,但是返回的類型確實Localdate類型的,此時的我就比較懵了,沒有進一步的學習,現在終於有空學習一下了,在這里記錄一下,就是解決我們使用localdate類沒有辦法和數據庫中date類型存儲數據的問題.我們知道java.sql.Date、java.sql.Timestamp、java.util.Date這些類都不好用,很多方法都過時了。Java8里面新出來了一些API,LocalDate、LocalTime、LocalDateTime 非常好用,默認的情況下,在mybatis里面不支持java8的時間、日期。直接使用,會報如下錯誤

Caused by: java.lang.IllegalStateException: No typehandler found for property createTime  
    at org.apache.ibatis.mapping.ResultMapping$Builder.validate(ResultMapping.java:151)  
    at org.apache.ibatis.mapping.ResultMapping$Builder.build(ResultMapping.java:140)  
    at org.apache.ibatis.builder.MapperBuilderAssistant.buildResultMapping(MapperBuilderAssistant.java:382)  
    at org.apache.ibatis.builder.xml.XMLMapperBuilder.buildResultMappingFromContext(XMLMapperBuilder.java:378)  
    at org.apache.ibatis.builder.xml.XMLMapperBuilder.resultMapElement(XMLMapperBuilder.java:280)  
    at org.apache.ibatis.builder.xml.XMLMapperBuilder.resultMapElement(XMLMapperBuilder.java:252)  
    at org.apache.ibatis.builder.xml.XMLMapperBuilder.resultMapElements(XMLMapperBuilder.java:244)  
    at org.apache.ibatis.builder.xml.XMLMapperBuilder.configurationElement(XMLMapperBuilder.java:116)  
    ... 81 common frames omitted  

那么我們應該如何解決這個問題呢?

如果是Mybatis3.4.5之前的版本,需要添加一個依賴

<dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>tk.mybatis</groupId>
            <artifactId>mapper-spring-boot-starter</artifactId>
            <version>2.0.2</version>
        </dependency>
        <!-- mybatis數據庫字段類型映射,此處是重點 -->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis-typehandlers-jsr310</artifactId>
            <version>1.0.1</version>
        </dependency>
        <!-- MYSQL驅動包 -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

如果是Mybatis3.4.5之后,則不需要添加了,因為已經支持了上面的依賴的內容。個人推薦使用3.4.5之后的。我們只需要知道對應time類下對應的那些localdate類需要對應到數據庫的哪一個類型就可以了。

上面就是一個數據庫中的類型和pojo類中日期類型的對應。

只需要在類型對應好,便可以像普通的數據類型一樣去實現交互了。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM