Mirageでは2waySQLは外部SQLファイルとして作成する必要がありますが、mirage-scalaでは以下のように複数行文字列を使ってソースコード中に直接2waySQLを記述することができるようにしています。
val resultList = sqlManager.getResultList(classOf[Book], Sql(""" SELECT BOOK_ID, BOOK_NAME, AUTHOR, PRICE FROM BOOK /*IF author != null*/ WHERE AUTHOR=/*author*/'Naoki Takezoe' /*END*/ """), new BookParam("Naoki Takezoe"))
ただ、巨大なSQLの場合はやはり外部SQLファイルにしたいという場合もあると思います。そんな場合は以下のようにして外部SQLファイルを使用することもできます。
val resultList = sqlManager.getResultList(classOf[Book], SqlFile("META-INF/selectBookByAuthor.sql"), new BookParam("Naoki Takezoe"))
SqlやSqlFileはSqlProviderというトレイトを継承しており、getSql()という2waySQLを文字列で返却するメソッドを実装しています。このSqlProviderトレイトを継承したクラスを作成することで2waySQLの入力方法を自由に追加することができます。