7
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

MyBatisでのupdate

Posted at

自動生成したMapperとEntityを使って、updateをする方法
いくつかメソッドがあり、素直に書くと無駄が多かったのでメモ。

最初の実装

  • updateByPrimaryKey()を使う
  1. selectByPKey()で更新対象のrecordを取得してEntityに保持
  2. Entityの中身をsetXX()で値変える
  3. updateByPrimaryKey(record)で更新
これで流れるSQL
update TABLE set col1 = ?, col2 = ? (全項目) where key = ?

別の方法

  • updateByPrimaryKeySelective()を使う
  1. 空のrecordのEntityを作成
  2. keyと、変えたい値(col1)だけset
  3. updateByPrimaryKeySelective(record)で更新
これで流れるSQL
update TABLE set col1 = ? where key = ?

MyBatisは使ってなかったけど、過去のPJではレコードを取得⇒更新の流れが普通だったので意識してなかったが、
Keyだけ指定して更新の方が確実で無駄が無いので良い。
もし、空のEntityじゃなくて取得した物を使ってSelectiveを呼ぶ場合、「更新対象の項目」かどうか判断するのは
「項目がnullかどうか」らしいので、注意。(まぁkeyだけセットするのが普通かな)

7
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?