概要
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を設定するといらないやつは出なくなった!!!
<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側でうまくいかない。。
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日くらいかかった気がする。。
同じことで悩む人がいないようにメモ残しとこう