ITの隊長のブログ

ITの隊長のブログです。Rubyを使って仕事しています。最近も色々やっているお(^ω^ = ^ω^)

PyCon JPへ登壇の申し込みをしました

採用されたら頑張ります。

pycon.jp

まだ裏話をまとめてないですが、以前、PyData Okinawaというコミュニティで下記Slideを発表しました。

www.slideshare.net

このときはデータ集めに必死でしたが、今度はディープラーニングをちゃんと学習してやろうかなと思います。

よろしくお願いします^^

【PlayFramework2.4】検索の条件の否定

「指定したidリストの中に入っているid以外のレコードを取得する」という要件がありました。

? そういえば否定ってやったことないな。と思い、色々探してやっとこさできたのでメモ。

import com.avaje.ebean.Expr;

// ... 省略

List<Integer> notSomethingModelIdList = new ArrayList<Integer>();
notSomethingModelIdList.add(1);
notSomethingModelIdList.add(2);
notSomethingModelIdList.add(3);

// 1~3のid以外のレコードを検索してくれる
List<SomethingModelClass> somethingModelList = SomethingModelClass.finder // finderはプロパティ => new Finder<>(Long.class, SomethingModelClass.class);
      .where()
      .not(Expr.in("id", notSomethingModelIdList))
      .findList();

Expr.in()で、idを検索するSQLを発行しているんだと思う、そのあとにnot()で囲んであげると、そのSQLが否定文になります。

これでよし。

他にもlt()とかgt()とかの不等号あたりの条件を発行するメソッドもあるので、下記を参照。

EBeanによるModelの作成[Java編](5/5):Herokuで始める 初心者のためのPlay Framework入門

よかったのか悪かったのか、これまでeq()や、ne()だけでプログラミングしていました。。。

【PlayFramework2.4】Betweenを使ったDB検索

例えば、この「日付からこの日付までにマッチするレコード」を出したいという要件がありました。

SQLだとBetweenさんの出番ですが、Play Framework2.xはどうすればいい? あります。Between。

過去やったことがあったけど、ブログ書いていなかったのでメモしておきます。

List<SomethingModelClass> SomethingModelClass = SomethingModelClass.FINDER // FINDERはプロパティ=> new Finder<>(Long.class, SomethingModelClass)
      .where()
      .between("created", "2017-04-01", "2017-04-30")
      .findList();

【Java】Map<String, Object>から取り出したときのキャスト

久々にやると思い出せない。

Map<String, Object>の変数を作ってキャストしようとした時、エラーが発生して、試行錯誤したらやっとできた。キャストだけで。。。

自分の場合は、Object -> Integerにしたかっただけなので、こうしました。

Map<String, Object> map = getStringObjectMap(); // new HashMap<String, Object>() {};
Integer somethingInteger = (Integer)map.get("something");

Integer.parseInt()でできるでしょ!と思っていたけど、よく考えたら引数Stringだけだし。。。忘れすぎてオワタ。

【Play Framework】クエリパラメータを取得する

メソッドの引数からも取れる。けど、複数あるとき~/conf/routesの記述が書きづらいので、リクエストのオブジェクトから取れないかなーと思って探したらあったのでメモ。

String value = request().getQueryString("key");

これでとれます。

こいつにOptionalをかませば、nullも回避するコードがかけますねー。

久々にPlay Framework触ったのでメモ。