45日目(Spring Framework3)
Spring JDBC
DAOパターンでの煩雑な記述が簡略化できる
利用方法
Templateクラスを利用する
- JdbcTemplate
- NamedParameterJdbcTemplate
利用の準備
このうちConnector-JとTomcatの設定は以前設定したものを流用
pom.xml
spring-jdbc(JDBC用)
spring-context(BeanFactory用)
spring-web(サーブレット用)
Bean定義ファイル
アノテーションの利用宣言文
<context:annotation-config />
コンポーネントスキャン範囲
<context:component-scan base-package="dao" />
<context:component-scan base-package="controller" />
名前空間jee
<jee:jndi-lookup id="dataSource" jndi-name="jdbc/mydb"/>
<bean class="org.springframework.jdbc.core.JdbcTemplate">
<constructor-arg ref="dataSource" />
</bean>
<bean class="org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate">
<constructor-arg ref="dataSource" />
</bean>
ついでに、動的Webプロジェクトのweb.xmlにも追記(これも必要らしい)
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/beans.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener- class>
</listener>
※ただし動的Webプロジェクトで作業しない場合web.xmlの記述はいらないらしい
Templateクラスのメソッド
- queryForObject() 単体カラムデータの取得
- queryForMap() 1レコード(1行分)の取得
- queryForList() 複数レコード(複数行)の取得
※基本は共通
以降は、以前作成したDAOのパターンの書き換えを行う。
- BeanPropertyRowMapper
- BeanPropertySqlParameterSource
の自動変換が非常に楽…なので、データベースとデータのやり取りを行うクラスのフィールド名・データベースのカラム名を合わせることの重要性を再確認。
今日はここまで。
週明けということと、土曜日に高尾山に登ったり日曜にハイカーボデイを設けたりで疲れが出てた一日。
しっかり復習しないと。