Рубрики
Без рубрики

Примеры запросов Spring SimpleJdbcTemplate

– Примеры запросов Spring SimpleJdbcTemplate

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

1. Запрос для одной строки

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

1.1 Пользовательский сопоставитель строк

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

package com.mkyong.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 Преобразователь свойств бобов

В simplejdbctemplate вам нужно использовать “Параметризованный BeanPropertyRowMapper” вместо “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 Параметризованный преобразователь свойств BeanPropertyRowMapper

public List findAll(){
		
	String sql = "SELECT * FROM CUSTOMER";
		
	List customers = 
		getSimpleJdbcTemplate().query(sql, 
		   ParameterizedBeanPropertyRowMapper.newInstance(Customer.class));
		
	return customers;
}

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

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

3.1 Имя одного столбца

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

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 Общее количество строк

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

public int findTotalCustomer(){
		
	String sql = "SELECT COUNT(*) FROM CUSTOMER";
		 
	int total = getSimpleJdbcTemplate().queryForInt(sql);
				
	return total;
}

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

package com.mkyong.common;

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

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.mkyong.customer.dao.CustomerDAO;
import com.mkyong.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.

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

Оригинал: “https://mkyong.com/spring/spring-simplejdbctemplate-querying-examples/”