Spring JDBCをSpringBootから扱えるようになるまでのメモ


目的

シンプルなサンプルプロジェクトを作成してから、Spring JDBCによるデータアクセスができるようになるまで

環境

IDE STS
フレームワーク Spring Boot
DB H2

手順

SpringBootのプロジェクトを作成する

pom.xmlに、以下のようにdependencyを追記する


・spring-boot-starter-jdbc
SpringJDBCに関するライブラリを追加している

・com.h2database
 ここでDBを設定している。
 今回はh2databaseをDBとして設定している。
 
jdbcSampleApplication

jdbcSampleApplication.java
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を選択し実行する。

コンソールに実行結果が表示される。