Spring SimpleJdbcTemplate Запрос примеров

Spring SimpleJdbcTemplate Запрос примеров

Вот несколько примеров, показывающих, как использовать методы SimpleJdbcTemplatequery() для запроса или извлечения данных из базы данных. В JdbcTemplatequery() вам необходимо вручную привести возвращаемый результат к желаемому типу объекта и передать массив объектов в качестве параметров. В SimpleJdbcTemplate это более удобно и просто.

jdbctemplate vesus simplejdbctemplate
Пожалуйста, сравните этотSimpleJdbcTemplate example с этимJdbcTemplate example.

1. Запросы для одного ряда

Вот два способа показать вам, как запросить или извлечь одну строку из базы данных и преобразовать ее в класс модели.

1.1 Custom RowMapper

В общем, всегда рекомендуется реализовать интерфейс RowMapper для создания пользовательского RowMapper в соответствии с вашими потребностями.

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

В SimpleJdbcTemplate вам нужно использовать «ParameterizedBeanPropertyRowMapper» вместо «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. Запросы для нескольких строк

Запрос или извлечение нескольких строк из базы данных и преобразование его в список.

2.1 ParameterizedBeanPropertyRowMapper

public List findAll(){

    String sql = "SELECT * FROM CUSTOMER";

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

    return customers;
}

3. Запросы для одного значения

Запрос или извлечение значения одного столбца из базы данных.

3.1 Single column name

Он показывает, как запросить имя одного столбца как String.

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

Он показывает, как запросить общее количество строк из базы данных.

public int findTotalCustomer(){

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

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

    return total;
}

Запустить его

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

    }
}

Заключение

SimpleJdbcTemplate не является заменой JdbcTemplate, это просто java5-дружественное дополнение к нему.

Скачать исходный код