Exemple Spring JDBC

Exemple Spring + JDBC

Dans ce tutoriel, nous allons étendre les derniersMaven + Spring hello world example en ajoutant le support JDBC, pour utiliser Spring + JDBC pour insérer un enregistrement dans une table client.

1. Table client

Dans cet exemple, nous utilisons la base de données 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. Dépendance du projet

Ajoutez les dépendances Spring et MySQL dans le fichier Mavenpom.xml.

Fichier: 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. Modèle client

Ajoutez un modèle client pour stocker les données client.

package com.example.customer.model;

import java.sql.Timestamp;

public class Customer
{
    int custId;
    String name;
    int age;
    //getter and setter methods

}

4. Modèle DAO (Data Access Object)

Interface client 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);
}

Implémentation client Dao, utilisez JDBC pour émettre une simple instruction d'insertion et de sélection.

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. Configuration du haricot de printemps

Créez le fichier de configuration Spring bean pour customerDAO et la source de données.
File : Spring-Customer.xml



    
        
    

Fichier: Spring-Datasource.xml



    

        
        
        
        
    

Fichier: Spring-Module.xml



    
    

6. Revoir la structure du projet

Structure de répertoire complète de cet exemple.

image

7. Exécuter

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);

    }
}

sortie

Customer [age=28, custId=1, name=example]

Télécharger le code source

Téléchargez-le–SpringJDBCExample.zip (10 Ko)