Spring JDBCの紹介 No. 2
Spring JDBCの2回目です。
今回は更新系の処理のパラメータ処理を通して、Spring JDBCの便利なところを確認していきます。
NamedParameterJdbcTemplate
今回はNamedParameterJdbcTemplateを使います。そのため、最初にBean定義をしておきます。
<bean class="org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate"> <constructor-arg ref="dataSource" /> </bean>
NamedParameterJdbcTemplateを使うとその名の通り、パラメーターに名前をつけて処理することができます。
パラメーターに名前をつける
INSERT処理を通して、パラメーターに名前をつける例を見ていきます。
public int insert(Book book) { return npJdbcTemplate.update( "INSERT INTO BOOK(book_id,book_name,price) " + "VALUES(:book_id,:book_name,:price)", new MapSqlParameterSource() .addValue("book_id", book.getBookId()) .addValue("book_name", book.getBookName()) .addValue("price", book.getPrice())); }
INSERT文のパラメーターに?の代わりに「:」から始まるパラメーター名を指定します。パラメーター名は任意の名前を指定できます。
パラメーターに値を渡すには、MapSqlParameterSourceオブジェクトを利用します。名前の通り、パラメーター名に対して渡す値を設定します。
addValueする順番は関係ありません。パラメーターの名前でmapされるので、パラメーターの名前があっていれば問題ありません。
Javaオブジェクトでパラメーターを渡す
次に、UPDATE文を通してJavaオブジェクトからパラメータを渡す例を見ていきます。
public int update(Book book) { BeanPropertySqlParameterSource beanProps = new BeanPropertySqlParameterSource( book); return npJdbcTemplate.update("UPDATE book " + "SET book_name=:bookName,price=:price WHERE book_id=:bookId", beanProps); }
INSERTと同様にSQLのパラメータには名前をつけます。ただし、今回はパラメータとして渡すJavaBeansオブジェクトのプロパティ名とします。
パラメータはBeanPropertySqlParameterSourceオブジェクトを渡します。コンストラクタでパラメータを含んだJavaBeansオブジェクトを指定することで適切に読み取ってくれます。
Spring3入門 ――Javaフレームワーク・より良い設計とアーキテクチャ
- 作者: 長谷川裕一,大野渉,土岐孝平
- 出版社/メーカー: 技術評論社
- 発売日: 2012/11/02
- メディア: 大型本
- 購入: 8人 クリック: 115回
- この商品を含むブログ (14件) を見る
まとめ http://kuwalab.hatenablog.jp/entry/spring
最初 http://kuwalab.hatenablog.jp/entry/spring_jdbc/1
前回 http://kuwalab.hatenablog.jp/entry/spring_jdbc/1
次回 http://kuwalab.hatenablog.jp/entry/spring_jdbc/3