6
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

MyBatisとLocalDateTimeとSpring

Posted at

概要

SpringBootでAPIを作ってみようと思って、DBとの連携はMyBatisだ!って軽い気持ちで挑んだらしょうもないとこでぶつかりまくったのでメモ残しておく

MyBatis Generator編

LocalDateTime型生成されない問題

この辺のサイトを参考にGradleでMyBatis Generatorが動くようにした。
これでmodelやmapperを生成するとMySQLのdatetime型カラムはJavaのDate型に対応して出力された。

LocalDateTime型が自動で生成されるようにしたくて公式サイト参考にしたらconfigにJSR310のproperty設定するだけで対応する!って書いてあるからやってみると、変換されない。。。

紆余曲折したけど、ぐぐってみると2018/7/4リリースのVersion:1.3.7で対応されたらしい。上のgradleで出来るやつがまだ対応してなくて変換されなかったらしい。

しょうがないので1.3.7対応してるEclipse Marketplace使って上記config設定して生成したらLocalDateTimeで生成されたっぞ!!

関係ないデータベースのmodel/mapper生成されちゃう問題

<table tableName="%"こんな感じでgeneratorConfig.xml設定してデータベースの全テーブル分宜しく生成してくれーと思ったら、information_schemaデータベース内のテーブルとかも大量に現れてきた。

これは公式にちゃんと書いてあった。
以下の通りnullCatalogMeansCurrentを設定するといらないやつは出なくなった!!!

generatorConfig.xml
    <jdbcConnection driverClass="com.mysql.jdbc.Driver" connectionURL="jdbc:mysql://localhost/my_schema"
            userId="my_user" password="my_password">
        <property name="nullCatalogMeansCurrent" value=true" />
    </jdbcConnection>

MyBatis編

typehandler見つからない問題

generatorはうまく言ったのにMybatis側でうまくいかない。。

catalina.2018-07-26.log
Caused by: java.lang.IllegalStateException: No typehandler found for property createDate

公式に書いてあったけどMyBatisのVersion:3.4.5からデフォルトでLocalDateTimeの変換対応してるらしい。
mybatis-spring-boot-starter:1.3.1を指定してたが無心でmybatis-spring-boot-starter:1.3.2にしてみたらバージョン上がってうまく動いた!

まとめ

ちょっとしたことだけど2日くらいかかった気がする。。
同じことで悩む人がいないようにメモ残しとこう

6
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?