Spring + JDBCの例
このチュートリアルでは、JDBCサポートを追加して最後のMaven + Spring hello world exampleを拡張し、Spring + JDBCを使用してレコードを顧客テーブルに挿入します。
1. 顧客テーブル
この例では、MySQLデータベースを使用しています。
CREATE TABLE `customer` ( `CUST_ID` int(10) unsigned NOT NULL AUTO_INCREMENT, `NAME` varchar(100) NOT NULL, `AGE` int(10) unsigned NOT NULL, PRIMARY KEY (`CUST_ID`) ) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;
2. プロジェクトの依存関係
SpringとMySQLの依存関係をMavenpom.xmlファイルに追加します。
ファイル:pom.xml
4.0.0 com.example.common SpringExample jar 1.0-SNAPSHOT SpringExample http://maven.apache.org org.springframework spring 2.5.6 mysql mysql-connector-java 5.1.9
3. 顧客モデル
顧客モデルを追加して、顧客のデータを保存します。
package com.example.customer.model;
import java.sql.Timestamp;
public class Customer
{
int custId;
String name;
int age;
//getter and setter methods
}
4. データアクセスオブジェクト(DAO)パターン
顧客Daoインターフェース。
package com.example.customer.dao;
import com.example.customer.model.Customer;
public interface CustomerDAO
{
public void insert(Customer customer);
public Customer findByCustomerId(int custId);
}
Customer Daoの実装では、JDBCを使用して単純な挿入および選択ステートメントを発行します。
package com.example.customer.dao.impl;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import javax.sql.DataSource;
import com.example.customer.dao.CustomerDAO;
import com.example.customer.model.Customer;
public class JdbcCustomerDAO implements CustomerDAO
{
private DataSource dataSource;
public void setDataSource(DataSource dataSource) {
this.dataSource = dataSource;
}
public void insert(Customer customer){
String sql = "INSERT INTO CUSTOMER " +
"(CUST_ID, NAME, AGE) VALUES (?, ?, ?)";
Connection conn = null;
try {
conn = dataSource.getConnection();
PreparedStatement ps = conn.prepareStatement(sql);
ps.setInt(1, customer.getCustId());
ps.setString(2, customer.getName());
ps.setInt(3, customer.getAge());
ps.executeUpdate();
ps.close();
} catch (SQLException e) {
throw new RuntimeException(e);
} finally {
if (conn != null) {
try {
conn.close();
} catch (SQLException e) {}
}
}
}
public Customer findByCustomerId(int custId){
String sql = "SELECT * FROM CUSTOMER WHERE CUST_ID = ?";
Connection conn = null;
try {
conn = dataSource.getConnection();
PreparedStatement ps = conn.prepareStatement(sql);
ps.setInt(1, custId);
Customer customer = null;
ResultSet rs = ps.executeQuery();
if (rs.next()) {
customer = new Customer(
rs.getInt("CUST_ID"),
rs.getString("NAME"),
rs.getInt("Age")
);
}
rs.close();
ps.close();
return customer;
} catch (SQLException e) {
throw new RuntimeException(e);
} finally {
if (conn != null) {
try {
conn.close();
} catch (SQLException e) {}
}
}
}
}
5. Spring Beanの構成
customerDAOおよびデータソースのSpringBean構成ファイルを作成します。
File : Spring-Customer.xml
ファイル:Spring-Datasource.xml
ファイル:Spring-Module.xml
6. プロジェクト構造を確認する
この例の完全なディレクトリ構造。

7. それを実行します
package com.example.common;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.example.customer.dao.CustomerDAO;
import com.example.customer.model.Customer;
public class App
{
public static void main( String[] args )
{
ApplicationContext context =
new ClassPathXmlApplicationContext("Spring-Module.xml");
CustomerDAO customerDAO = (CustomerDAO) context.getBean("customerDAO");
Customer customer = new Customer(1, "example",28);
customerDAO.insert(customer);
Customer customer1 = customerDAO.findByCustomerId(1);
System.out.println(customer1);
}
}
出力
Customer [age=28, custId=1, name=example]
ソースコードをダウンロード
ダウンロード–SpringJDBCExample.zip(10 KB)