Spring JDBCの紹介 No. 3
Spring JDBCの3回目です。
今回はSELECT時のNamedParameterJdbcTemplateのサンプルです。
今回のソースです。
@Autowired private JdbcTemplate jdbcTemplate; @Autowired private NamedParameterJdbcTemplate npJdbcTemplate; public List<Book> searchBookList1(String bookName) { return jdbcTemplate.query("SELECT * FROM book WHERE book_name LIKE ?", new BeanPropertyRowMapper<Book>(Book.class), bookName + "%"); } public List<Book> searchBookList2(String bookName) { return npJdbcTemplate.query( "SELECT * FROM book WHERE book_name LIKE :book_name", new MapSqlParameterSource().addValue("book_name", bookName), new BeanPropertyRowMapper<Book>(Book.class)); } public List<Book> searchBookList3(Book book) { return npJdbcTemplate.query( "SELECT * FROM book WHERE book_name LIKE :bookName", new BeanPropertySqlParameterSource(book), new BeanPropertyRowMapper<Book>(Book.class)); }
?にパラメータを渡す
?にパラメータを渡す例です。3番目の引数は可変長になっているため、?の数に合わせて?の順番通りにパラメータを渡していきます。
public List<Book> searchBookList1(String bookName) { return jdbcTemplate.query("SELECT * FROM book WHERE book_name LIKE ?", new BeanPropertyRowMapper<Book>(Book.class), bookName + "%"); }
2番目の引数にBeanPropertyRowMapperを指定しています。これは引数のclassのオブジェクトを作成し、SELECT文で取得した列名をJavaオブジェクトのプロパティに割り当てます。このとき「_」で区切られた列名の場合にはそのままのプロパティがあればそのまま、なければキャメルケースに変換して割り当てます。今回の場合book_nameやbook_idというプロパティが無いため、自動的にbookNameとbookIdに値が割り当てられています。
パラメーター名
前回と同様、?ではなくパラメーター名を指定して値を設定することができます。
public List<Book> searchBookList2(String bookName) { return npJdbcTemplate.query( "SELECT * FROM book WHERE book_name LIKE :book_name", new MapSqlParameterSource().addValue("book_name", bookName), new BeanPropertyRowMapper<Book>(Book.class)); }
JavaBeansでパラメーターを渡す
同様にJavaBeansでもパラメーターが渡せます。
public List<Book> searchBookList3(Book book) { return npJdbcTemplate.query( "SELECT * FROM book WHERE book_name LIKE :bookName", new BeanPropertySqlParameterSource(book), new BeanPropertyRowMapper<Book>(Book.class)); }
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/2
次回 http://kuwalab.hatenablog.jp/entry/spring_jdbc/4