読者です 読者をやめる 読者になる 読者になる

PlayFramework Listを使ってIN句でqueryをかける

idとtypeでqueryをかけて結果を取得するような場合、bindを使ってListの内容をそのままIN句に使うことができます。
String型のリストなら自動でシングルクォートを付けて、SQLエスケープもやってくれるようです。

List<MyModel> list = new ArrayList();

List<Long> idList = new ArrayList();
// idListにIDを追加
List<String> typeList = new ArrayList();
// typeListに抽出するTypeを追加
list = MyModel.find("id IN (:idList) AND typeStr IN (:typeList)").bind("idList", idList).bind("typeList", typeList).fetch();
// id IN (1, 2, 3) AND typeStr IN ('foo', 'bar', 'hoge');

return list;

Source:
http://www.playframework.org/documentation/1.2/guide6
http://stackoverflow.com/questions/7205955/is-my-sql-query-prone-to-sql-injection-or-other-attacks