Spring Boot(RequestMapping, SqlResultSetMapping)をKotlinで実装してハマった事




KotlinのSpring関連記事が全然ない

最近流行りのKotlinでSpring Bootアプリケーションを実装しているのですが、ネット上にKotlinでSpring Bootを実装している記事や事例が少なくてちょっとしたことに結構時間を使ってしまいました。

なので、その中で自分がハマってしまった事を紹介していくので是非参考にしてください。

@RequestMapping

リクエストとControllerをマッピングするアノテーションで、Javaで書くと下記のようになります。

@RequestMapping(path = "/content", method = RequestMethod.GET)

Kotlinで書く場合はarrayOfを使用して配列として書かなければいけません。

@RequestMapping(path = "/content", method = arrayOf(RequestMethod.GET))

.class

Javaでは下記になります。

Integer.class
String.class

kotlinでは下記です。Kotlinの場合は .プロパティ名と書くとJavaにコンパイルした時にgetterを使ってくれるから::になっているんだと思います。

Int::class
String::class

アノテーションの中のアノテーションSqlResultSetMapping

Javaの場合下記のようにアノテーションの中でアノテーションが使えます。

@SqlResultSetMapping(
    name = "SampleMapping",
    classes = {
        @ConstructorResult(
            targetClass = Smaple.class,
            columns = {
                @ColumnResult(name="appId", type=Int.class),
                @ColumnResult(name="datetime", type=Timestamp.class)
            }
        )
    }
)

Kotlinの場合、アノテーションの中のアノテーションは省略して書きます。@SqlResultSetMappingは上記の書き方を全て使うのでKotlinでいきなりこれを使おうとするとハマってしまうのでぜひ参考にしてください。

@SqlResultSetMapping(
    name = "SampleMapping",
    classes = (
        arrayOf(
            ConstructorResult(
                targetClass = Sample::class,
                columns = (
                    arrayOf(
                        ColumnResult(name="appId", type=Int::class),
                        ColumnResult(name="datetime", type=Timestamp::class)
                    )
                )
            )
        )
    )
)

まとめ

覚えてしまえばすごくシンプルなのですが、KotlinでSpring Bootアプリケーションを実装している参考記事や事例が全然見つからなかったので自分は結構時間を使ってしまいました。今回は直近自分がハマった3点だけ紹介しましたが今後もハマりポイントを見つけたら追記していきます。

おすすめ書籍

JPAに関して体系的に学べる良い書籍だと思います。良くあるSpring系書籍ですとJPAは少ししか紹介がありませんが丸々一冊JPAに関してなので詳細な解説がされています。内容はJPAと他のORMとの比較から始まりセットアップ、実装の仕方まで幅広く網羅されています。これからJPAで開発を初めてみようかなと考えている方は一読することをオススメします!

Springの概要からインストール方法、各コア機能(Security, Sessionなど)の解説が体系的にまとめられています。2018年に出版されたばかりなので情報も新しいです。これからSpring Bootでアプリケーション開発をしたい方の最初に読む一冊としておすすめします。対象は初心者だけでなく上級者まで幅広く学べるので是非読んでみてください!

 

The following two tabs change content below.

髙妻智一

2013年CyberAgent新卒入社 スマホゲームを作る子会社に所属し、サーバーサイドのエンジニアを担当。2年目の終わりから新規子会社の立ち上げに参加し、サーバーサイドのエンジニアリーダーとしてサービースのリリースから運用までを担当。 2018年仮想通貨のスマホウォレットを提供するGinco Incにブロックチェーンエンジニアとして入社。






よく読まれている関連記事はこちら




コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です