Spring SimpleJdbcTemplate Exemples d’interrogation

Exemples de requêtes Spring SimpleJdbcTemplate

Voici quelques exemples pour montrer comment utiliser les méthodes SimpleJdbcTemplatequery() pour interroger ou extraire des données de la base de données. Dans JdbcTemplatequery(), vous devez convertir manuellement le résultat renvoyé en type d'objet souhaité et passer un tableau d'objets en tant que paramètres. Dans SimpleJdbcTemplate, il est plus convivial et simple.

jdbctemplate vesus simplejdbctemplate
Veuillez comparer ceSimpleJdbcTemplate example avec ceJdbcTemplate example.

1. Interrogation d'une seule ligne

Voici deux façons de vous montrer comment interroger ou extraire une seule ligne de la base de données et la convertir en classe de modèle.

1.1 Custom RowMapper

En général, il est toujours recommandé d'implémenter l'interface RowMapper pour créer un RowMapper personnalisé en fonction de vos besoins.

package com.example.customer.model;

import java.sql.ResultSet;
import java.sql.SQLException;

import org.springframework.jdbc.core.RowMapper;

public class CustomerRowMapper implements RowMapper
{
    public Object mapRow(ResultSet rs, int rowNum) throws SQLException {
        Customer customer = new Customer();
        customer.setCustId(rs.getInt("CUST_ID"));
        customer.setName(rs.getString("NAME"));
        customer.setAge(rs.getInt("AGE"));
        return customer;
    }

}
public Customer findByCustomerId(int custId){

    String sql = "SELECT * FROM CUSTOMER WHERE CUST_ID = ?";

    Customer customer = getSimpleJdbcTemplate().queryForObject(
            sql,  new CustomerParameterizedRowMapper(), custId);

    return customer;
}

1.2 BeanPropertyRowMapper

Dans SimpleJdbcTemplate, vous devez utiliser ‘ParameterizedBeanPropertyRowMapper’ au lieu de ‘BeanPropertyRowMapper’.

public Customer findByCustomerId2(int custId){

    String sql = "SELECT * FROM CUSTOMER WHERE CUST_ID = ?";

    Customer customer = getSimpleJdbcTemplate().queryForObject(sql,
          ParameterizedBeanPropertyRowMapper.newInstance(Customer.class), custId);

    return customer;
}

2. Interrogation de plusieurs lignes

Recherchez ou extrayez plusieurs lignes de la base de données et convertissez-la en liste.

2.1 ParameterizedBeanPropertyRowMapper

public List findAll(){

    String sql = "SELECT * FROM CUSTOMER";

    List customers =
        getSimpleJdbcTemplate().query(sql,
           ParameterizedBeanPropertyRowMapper.newInstance(Customer.class));

    return customers;
}

3. Interrogation d'une valeur unique

Recherchez ou extrayez une seule valeur de colonne de la base de données.

3.1 Single column name

Il montre comment interroger un nom de colonne unique en tant que chaîne.

public String findCustomerNameById(int custId){

    String sql = "SELECT NAME FROM CUSTOMER WHERE CUST_ID = ?";

    String name = getSimpleJdbcTemplate().queryForObject(
        sql, String.class, custId);

    return name;

}

3.2 Total number of rows

Il montre comment interroger un nombre total de lignes de la base de données.

public int findTotalCustomer(){

    String sql = "SELECT COUNT(*) FROM CUSTOMER";

    int total = getSimpleJdbcTemplate().queryForInt(sql);

    return total;
}

Exécuter

package com.example.common;

import java.util.ArrayList;
import java.util.List;

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 SimpleJdbcTemplateApp
{
    public static void main( String[] args )
    {
         ApplicationContext context =
            new ClassPathXmlApplicationContext("Spring-Customer.xml");

         CustomerDAO customerSimpleDAO =
                (CustomerDAO) context.getBean("customerSimpleDAO");

         Customer customerA = customerSimpleDAO.findByCustomerId(1);
         System.out.println("Customer A : " + customerA);

         Customer customerB = customerSimpleDAO.findByCustomerId2(1);
         System.out.println("Customer B : " + customerB);

         List customerAs = customerSimpleDAO.findAll();
         for(Customer cust: customerAs){
             System.out.println("Customer As : " + customerAs);
         }

         List customerBs = customerSimpleDAO.findAll2();
         for(Customer cust: customerBs){
             System.out.println("Customer Bs : " + customerBs);
         }

         String customerName = customerSimpleDAO.findCustomerNameById(1);
         System.out.println("Customer Name : " + customerName);

         int total = customerSimpleDAO.findTotalCustomer();
         System.out.println("Total : " + total);

    }
}

Conclusion

Le SimpleJdbcTemplate n'est pas un remplacement de JdbcTemplate, c'est juste un supplément compatible avec java5.

Télécharger le code source