# EntityHandler

EntityHandlerはDAOインタフェースを利用したDB操作を行う際に実行するSQLの生成を制御するためのクラスです。
アプリケーションの要件によってEntityHandler (opens new window)インタフェースやDefaultEntityHandler (opens new window)クラスを継承した独自のEntityHandlerを指定することが出来ます。

TIP

EntityHandlerはDAOインタフェース利用時のみに有効な手段ですが、SQLファイルインタフェースにおいても自動でバインドする場合は、自動パラメータバインド関数の設定を参照してください。

EntityHandler拡張例

public class CustomEntityHandler extends DefaultEntityHandler
  implements EntityHandler<Object> {

  @Override
  public void setInsertParams(final SqlContext context, final Object entity) {
    setEntityModelInsertParams((EntityModel) entity);  // entityがEntityModel型を継承している場合
    super.setInsertParams(context, entity);
  }

  @Override
  public void setUpdateParams(final SqlContext context, final Object entity) {
    setEntityModelUpdateParams((EntityModel) entity);  // entityがEntityModel型を継承している場合
    super.setUpdateParams(context, entity);
  }

  @Override
  public void setBulkInsertParams(final SqlContext context, final Object entity, final int entityIndex) {
    setEntityModelInsertParams((EntityModel) entity);  // entityがEntityModel型を継承している場合
    super.setBulkInsertParams(context, entity, entityIndex);
  }

  private void setEntityModelInsertParams(final EntityModel model) {
    ZonedDateTime now = ZonedDateTime.now();
    model.setCreatedAt(now);
    model.setUpdatedAt(now);
  }

  private void setEntityModelUpdateParams(final EntityModel model) {
    model.setUpdatedAt(ZonedDateTime.now());
  }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
// create SqlConfig
SqlConfig config = UroboroSQL
  .builder(...)
  // EntityHandlerの設定
  .setEntityHandler(new CustomEntityHandler()).build();
1
2
3
4
5