Spring MVCでMySQLにJDBC Templateを使って接続してみた

はじめに

  • 前回の環境を元に、データベースへの接続の実装をしてみました。

Mavenから依存関係の追加

pom.xmlを開き、内の最終行に追加してください。

MySQL JDBCコネクタの追加

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.1.45</version>
</dependency>

Spring JDBCの追加

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-jdbc</artifactId>
    <version>${org.springframework-version}</version>
</dependency>

クリーンアップとインストール

  1. プロジェクトを右クリックし、「実行 > Maven clean」を実行します。
  2. 同じく、「実行 > Maven install」を実行します。

MySQLのセットアップ

MySQLのインストール

brew install mysql

MySQLの起動

mysql.server start

データベースの作成

CREATE DATABASE sandbox DEFAULT CHARACTER SET utf8;

テーブルの作成

create table users(id int, name varchar(20));

データの投入

適当にInsertしておいてください。

JDBCの接続設定

root-context.xmlを開き、内の最終行に追加してください。

接続設定

<bean id="dataSource"
    class="org.springframework.jdbc.datasource.DriverManagerDataSource">
    <property name="driverClassName">
        <value>com.mysql.jdbc.Driver</value>
    </property>
    <property name="url">
        <value>jdbc:mysql://127.0.0.1:3306/sandbox</value>
    </property>
    <property name="username">
        <value>root</value>
    </property>
    <property name="password">
        <value></value>
    </property>
</bean>

JDBC Templateの設定

<bean class="org.springframework.jdbc.core.JdbcTemplate">
    <constructor-arg ref="dataSource" />
</bean>

接続確認プログラムの実装

コントローラーの実装

HomeController.java
package com.sandbox.app;

import java.util.List;
import java.util.Locale;
import java.util.Map;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

/**
 * Handles requests for the application home page.
 */
@Controller
public class HomeController {

    @Autowired
    private JdbcTemplate jdbcTemplate;

    @RequestMapping(value = "/", method = RequestMethod.GET)
    public String home(Locale locale, Model model) {

        List<Map<String, Object>> list = jdbcTemplate.queryForList("SELECT * FROM users");

        model.addAttribute("data", list.get(0).get("name") );

        return "home";
    }
}

ビューの実装

home.jsp
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ page session="false" %>
<html>
    <head>
        <title>Home</title>
    </head>
    <body>
    <h1>
        Hello world!  
    </h1>
    <p>  DB's data is ${data}. </p>
    </body>
</html>

Tomcatの起動

プロジェクトを右クリックし、「実行 > サーバーで実行」を実行します。以下のようなページが表示されれば成功です。

FireShot Capture 066 - Home - http___localhost_8080_app_.jpg

まとめ

  • JPAとの違いってなんだろう?
  • 実践的にはORMライブラリを使うのだろうか?