スニペットコード
Javaなんよ
非効率的な気がするが…
画面上のBeanのリストとDBから取得したDtoのリストを比べて、Beanにキー値が入っていれば更新を試み、なければインサートするという処理。
private void saveDB () { // ページにあるデータ pgDataList; // データベースにあるデータ dbDataList; for ( pgData : pgDataList ) { if ( pgData.getKey() != null ) { // key String key = pgData.getKey(); boolean insert = true; // ページから送られた情報にDBの主キーがある Iterator it = dbDataList.iterator(); while (it.hasNext()) { if ( it.getKey().equals(key) ) { // 更新かける insert = false; DBUtil.update(key, pgData); it.remove(); break; } } if ( insert ) { DBUtil.insert(pgData); } } else { // ページから送られた情報にDBの主キーなし DBUtil.insert(pgData); } } // 更新されなかったデータを削除 for ( dbData : dbDataList ) { dbData.delete(); } }