エキサイト株式会社メディア開発の佐々木です。
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