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)