Java15のTextBlockとMyBatisのカスタムクエリについて

エキサイト株式会社メディア開発の佐々木です。

Java15で入ったTextBlockでMyBatisのカスタムクエリがアノテーション内でできないかなと思い試してみました。

結果

できた。これは嬉しい。Javaのことだからアノテーションだけ使えないとかはさすがにないと思いましたが、試してみてできたので、やっぱりさすがだなと思いました。

内容

Javaでは、TextBlockがなかったので、カスタムクエリをXMLやFreeMarkerを用いて別ファイルにしていましたが、TextBlockが入ってくれたおかげで、アノテーション内にも、クエリがかけるようになりました。

@Mapper
public interface BookCustomMapper {

    // いままで
    @Lang(FreeMarkerLanguageDriver.class)
    @Select("findByBookId.ftl")
    List<Books> findByBookIdFtl(@Param("id") Long id);


    // TextBlockの恩恵
    @Lang(FreeMarkerLanguageDriver.class)
    @Select("""
            select
             *
            from
              book
            where
              1 = 1
              <#if id?has_content>
              AND book_id = <@p name="id"/>
              </#if>
            """)
    List<Books> findByBookId(@Param("id") Long id);

FreeMarker記法もちゃんと認識してくれているんで便利ですねー。ちょっとしたカスタムクエリには使ってもいいかなと思います。

最後に

現状は、Java11(LTS)を使用しているんで、Java17になったら思う存分使おうと思います。

エキサイトではフロントエンジニア、バックエンドエンジニア、アプリエンジニアを随時募集しております。長期インターンも歓迎していますので、興味があれば連絡いただければと思います。 www.wantedly.com