Spring SimpleJdbcTemplate Beispiele abfragen
In den folgenden Beispielen wird gezeigt, wie die Methoden von SimpleJdbcTemplatequery()
zum Abfragen oder Extrahieren von Daten aus der Datenbank verwendet werden. In JdbcTemplatequery()
müssen Sie das zurückgegebene Ergebnis manuell in den gewünschten Objekttyp umwandeln und ein Objektarray als Parameter übergeben. In SimpleJdbcTemplate ist es benutzerfreundlicher und einfacher.
jdbctemplate vesus simplejdbctemplate
Bitte vergleichen Sie dieseSimpleJdbcTemplate example mit diesenJdbcTemplate example.
1. Einzelne Zeile abfragen
Auf zwei Arten wird gezeigt, wie Sie eine einzelne Zeile aus der Datenbank abfragen oder extrahieren und in eine Modellklasse konvertieren.
1.1 Custom RowMapper
Im Allgemeinen wird immer empfohlen, die RowMapper-Schnittstelle zu implementieren, um einen benutzerdefinierten RowMapper zu erstellen, der Ihren Anforderungen entspricht.
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
In SimpleJdbcTemplate müssen Sie "ParameterizedBeanPropertyRowMapper" anstelle von "BeanPropertyRowMapper" verwenden.
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. Abfragen für mehrere Zeilen
Fragen Sie mehrere Zeilen aus der Datenbank ab oder extrahieren Sie sie und konvertieren Sie sie in eine Liste.
2.1 ParameterizedBeanPropertyRowMapper
public ListfindAll(){ String sql = "SELECT * FROM CUSTOMER"; List customers = getSimpleJdbcTemplate().query(sql, ParameterizedBeanPropertyRowMapper.newInstance(Customer.class)); return customers; }
3. Abfrage nach einem einzelnen Wert
Fragen Sie einen einzelnen Spaltenwert aus der Datenbank ab oder extrahieren Sie ihn.
3.1 Single column name
Es wird gezeigt, wie ein einzelner Spaltenname als String abgefragt wird.
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
Es wird gezeigt, wie eine Gesamtanzahl von Zeilen aus der Datenbank abgefragt wird.
public int findTotalCustomer(){ String sql = "SELECT COUNT(*) FROM CUSTOMER"; int total = getSimpleJdbcTemplate().queryForInt(sql); return total; }
Starte es
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); ListcustomerAs = 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); } }
Fazit
Das SimpleJdbcTemplate ist kein Ersatz für JdbcTemplate, sondern lediglich eine java5-freundliche Ergänzung.
Quellcode herunterladen
Laden Sie es herunter -Spring-SimpleJdbcTemplate-Querying-Example.zip (15 KB)