#目的
シンプルなサンプルプロジェクトを作成してから、Spring JDBCによるデータアクセスができるようになるまで
#環境
IDE STS
フレームワーク Spring Boot
DB H2
pom.xmlに、以下のようにdependencyを追記する
・spring-boot-starter-jdbc
SpringJDBCに関するライブラリを追加している
・com.h2database
ここでDBを設定している。
今回はh2databaseをDBとして設定している。
jdbcSampleApplication
package com.example;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.jdbc.core.namedparam.MapSqlParameterSource;
import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate;
import org.springframework.jdbc.core.namedparam.SqlParameterSource;
@EnableAutoConfiguration
public class JdbcSampleApplication implements CommandLineRunner{
@Autowired
NamedParameterJdbcTemplate jdbcTemplate;
@Override
public void run(String... strings) throws Exception {
String sql = "select :test01 +:test02";//パラメータを表示するだけ
SqlParameterSource param = new MapSqlParameterSource()
.addValue("test01", 1).addValue("test02",2);//パラメータを設定
Integer result = jdbcTemplate.queryForObject(sql, param, Integer.class);
System.out.println("result =" + result);//コンソールに表示する
}
public static void main(String[] args) {
SpringApplication.run(JdbcSampleApplication.class, args);
}
}
変更点
初期生成されるソースに以下の変更を行う
・CommandLineRunnerを実装
DIコンテナのイジェクションができるようにする
・@AutowiredでNamedParameterJdbcTemplateを指定
DIコンテナがイジェクションするフィールドであることを@Autowiredで指定する
これで、jdbcTemplateにNamedParameterJdbcTemplateのオブジェクトがインジェクションされてくる
autoconfigureによって、pom.xmlにJDBCドライバを定義するだけで利用可能になる
・パラメータの設定
SQLのプレースフォルダは :キー名
MapSqlParameterSourceのオブジェクトにキー名、値、でパラメータを設定する。
・SQLの実行
jdbcTemplate.queryForObject(sql, param, Integer.class);
で、SQL、パラメータを設定し、結果を受け取る。
jdbcSampleApplicationを選択し、
Run Asから
Java Applicationを選択し実行する。