クエリビルダ
パッケージ org.seasar.doma.jdbc.builder
は SQL ビルダを提供します。
クエリ を使用して SQL ステートメントを構築するのが難しい場合は、デフォルトメソッド で SQL ビルダを使用することを検討してください。
検索
SelectBuilder builder = SelectBuilder.newInstance(config);
builder.sql("select");
builder.sql("id").sql(",");
builder.sql("name").sql(",");
builder.sql("salary");
builder.sql("from Emp");
builder.sql("where");
builder.sql("job_type = ").literal(String.class, "fulltime");
builder.sql("and");
builder.sql("name like ").param(String.class, "S%");
builder.sql("and");
builder.sql("age in (").params(Integer.class, Arrays.asList(20, 30, 40)).sql(")");
List<Emp> employees = builder.getEntityResultList(Emp.class);
SQL の実行結果はさまざまな方法で取得できます。
単一レコードの検索
getScalarSingleResult
getOptionalScalarSingleResult
getEntitySingleResult
getOptionalEntitySingleResult
getMapSingleResult
getOptionalMapSingleResult
複数レコードの検索
getScalarResultList
getOptionalScalarResultList
getEntityResultList
getMapResultList
ストリーム検索
streamAsScalar
streamAsOptionalScalar
streamAsEntity
streamAsMap
追加
InsertBuilder builder = InsertBuilder.newInstance(config);
builder.sql("insert into Emp");
builder.sql("(name, salary)");
builder.sql("values (");
builder.param(String.class, "SMITH").sql(", ");
builder.param(BigDecimal.class, new BigDecimal(1000)).sql(")");
builder.execute();
更新
UpdateBuilder builder = UpdateBuilder.newInstance(config);
builder.sql("update Emp");
builder.sql("set");
builder.sql("name = ").param(String.class, "SMIHT").sql(",");
builder.sql("salary = ").param(BigDecimal.class, new BigDecimal("1000"));
builder.sql("where");
builder.sql("id = ").param(int.class, 10);
builder.execute();
削除
DeleteBuilder builder = DeleteBuilder.newInstance(config);
builder.sql("delete from Emp");
builder.sql("where");
builder.sql("name = ").param(String.class, "SMITH");
builder.sql("and");
builder.sql("salary = ").param(BigDecimal.class, new BigDecimal(1000));
builder.execute();