S2Dao 1.0.37 リリース!

 今回のリリースで、メソッド名の末尾に UnlessNull がついていると null ではないフィールドのみ UPDATE 対象となるそうな。

こんな感じかな?(実際に動かしたわけではありません)

DTO

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 を一回余計にやらなければならないことがあるんだよねぇ。さっそく今作っているシステムのやつをアップデートすることにしよう。