Exemples Spring + JdbcTemplate + JdbcDaoSupport
Dans le développement Spring JDBC, vous pouvez utiliser les classesJdbcTemplate
etJdbcDaoSupport
pour simplifier les processus généraux de fonctionnement de la base de données.
Dans ce tutoriel, nous réutiliserons les derniersSpring + JDBC example, pour voir la différence entre un exemple avant (pas de support JdbcTemplate) et après (avec support JdbcTemplate).
1. Exemple sans JdbcTemplate
Sans JdbcTemplate, vous devez créer de nombreux codes redondants (créer une connexion, fermer la connexion, gérer l'exception) dans toutes les méthodes d'opération de la base de données DAO - insérer, mettre à jour et supprimer. Il n'est tout simplement pas efficace, moche, sujet aux erreurs et fastidieux.
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) {} } } }
2. Exemple avec JdbcTemplate
Avec JdbcTemplate, vous économisez beaucoup de frappe sur les codes redondants, car JdbcTemplate le traitera automatiquement.
private DataSource dataSource; private JdbcTemplate jdbcTemplate; public void setDataSource(DataSource dataSource) { this.dataSource = dataSource; } public void insert(Customer customer){ String sql = "INSERT INTO CUSTOMER " + "(CUST_ID, NAME, AGE) VALUES (?, ?, ?)"; jdbcTemplate = new JdbcTemplate(dataSource); jdbcTemplate.update(sql, new Object[] { customer.getCustId(), customer.getName(),customer.getAge() }); }
Voir les différents?
3. Exemple avec JdbcDaoSupport
En étendant JdbcDaoSupport, définissez la source de données et JdbcTemplate dans votre classe n'est plus requis, il vous suffit d'injecter la source de données correcte dans JdbcCustomerDAO. Et vous pouvez obtenir le JdbcTemplate en utilisant une méthode getJdbcTemplate ().
public class JdbcCustomerDAO extends JdbcDaoSupport implements CustomerDAO { //no need to set datasource here public void insert(Customer customer){ String sql = "INSERT INTO CUSTOMER " + "(CUST_ID, NAME, AGE) VALUES (?, ?, ?)"; getJdbcTemplate().update(sql, new Object[] { customer.getCustId(), customer.getName(),customer.getAge() }); }
Note
Dans le développement JDBC Spring, il est toujours recommandé d'utiliserJdbcTemplate
etJdbcDaoSupport
, au lieu de coder vous-même le code JDBC.
Télécharger le code source
Téléchargez-le -Spring-JDBC-Example.zip (15 Ko)