今回は、Doma2のupdateする時に更新したい項目のみupdateできるinclude属性についてみてみたいと思います。
使い方
@Update の include 要素に指定されたプロパティのみを更新対象とします。
@Update(include = {"isDelete", "updateId", "updateDateTime"})
int delete(InformationEntity entity);
- 自動生成SQLを使うので、「sqlFile」属性は指定していません。
- 「”isDelete”, “updateId”, “updateDateTime”」3つの項目を更新対象として指定しています。
// Entityクラスの一部
public void delete(
String updateId) {
this.isDelete = DeleteFlag.DELETE.value();
this.updateId = updateId;
this.updateDateTime = LocalDateTime.now();
}
- 上記はEntityクラスのメソッドです。
- 名前のように論理削除をする時に呼び出して使うために作成しました。
@Transactional(rollbackFor = Exception.class)
public void remove(Integer id, String userId) throws IllegalArgumentException {
InformationEntity informationEntity = informationDao.selectNotDeleteById(id);
if (Objects.isNull(informationEntity)) {
throw new IllegalArgumentException("該当お知らせがありません。ID = " + id);
}
informationEntity.delete(userId);
informationDao.delete(informationEntity);
}
- 上記はServiceクラスの一部です。
- 削除対象の情報を取得してEntityクラスの「delete」メソッドを呼び出します。(論理削除の更新情報をセットしてくれる)
- そしてDaoのdeleteメソッドを呼び出します。
終わりに
いろいろなオプションがありますが、今回はupdateのincludeだけみてみました。恥ずかしいながら上記のソースコードは自分の個人プロジェクトの一部なので、参考だけにしていただければと思います。
doma2のupdateについて詳しい情報が欲しい方はこちらをご参考ください。
