S2Dao 1.0.37 リリース!
今回のリリースで、メソッド名の末尾に UnlessNull がついていると null ではないフィールドのみ UPDATE 対象となるそうな。
こんな感じかな?(実際に動かしたわけではありません)
public class Hoge { private Integer id = null; private String name = null; private String password = null; public void setId(Integer id) { this.id = id; } public Integer getId() { return this.id; } public void setName(String name) { this.name = name; } public String getId() { return this.name; } public void setPassword(String password) { this.password = password; } public String getPassword() { return this.password; } }
DAO
public interface HogeDao { static final Class BEAN = Hoge.class; void update(Hoge); void updateUnlessNull(Hoge hoge); }
テストプログラム
Hoge hoge = new Hoge(); hoge.setId(new Integer(1)); hoge.setName("foobar"); hogeDao.update(hoge); // (1) hogeDao.updateUnlessNull(hoge); // (2)
発行されるSQL
(1) UPDATE Hoge SET id = 1, name = 'foobar', password = null WHERE id = 1 (2) UPDATE Hoge SET id = 1, name = 'foobar' WHERE id = 1
助かるなぁ。これがないと、SELECT を一回余計にやらなければならないことがあるんだよねぇ。さっそく今作っているシステムのやつをアップデートすることにしよう。