SpringJDBC入門 NamedTemplate編
SpringJDBCにはSQL文発行用の2つのテンプレートがあり、前回は何気に一つ(SimpleJdbcTemplate というもの)使っていました。
今回はもう一つのテンプレートであるNamedParameterJdbcTemplateなるものを紹介します。
これは呼んで字のごとく、SQL文に書いてあるパラメータ(プレースホルダー)を「id=?」というふうに'?'ではなく、
「id=:id」というようにプロパティ名を指定して埋め込むことが出来るというテンプレートです。
これは何に便利かというと、
SQLの検索時の条件値や更新時の更新値、条件値の指定が複数個あるときに順番を気にせずに
値の設定がしやすいという点。(「~=?」という複数のプレースホルダーが存在する場合、順番を間違えるとぜんぜん期待と違う結果を出してしまう恐れがあるので。)
たとえば
『「111」というIDの社員が部署コードAの部署に配属された』
という社員情報挿入の場合を以下に記述しますと、
public void insert(SHAIN shain) {
Map params = new HashMap();
params.put("id", shain.getId());
params.put("cdBumon", shain.getCdBumon());
jdbcTemplate.update("INSERT INTO SHAIN (ID,CD_BUMON) VALUE (:id,:cdBumon)", params);
}
となります。上記はマップを使用して値の設定をしていますが、
必要なパラメータが一つのクラスに全部含まれている場合、
パラメータのGetter・Setterがあれば
public void insert(SHAIN shain) {
jdbcTemplate.update("INSERT INTO SHAIN (ID,CD_BUMON) VALUE (:id,:cdBumon)", shain);
}
と記述してもOK。
ということでSQLをソースに書くというソースゴリゴリタイプではありますが、更新をわかりやすく書きたい場合には重宝するかと。