Примеры Spring + JdbcTemplate + JdbcDaoSupport

Примеры Spring + JdbcTemplate + JdbcDaoSupport

При разработке Spring JDBC вы можете использовать классыJdbcTemplate иJdbcDaoSupport, чтобы упростить общие процессы работы с базой данных.

В этом руководстве мы повторно используем последнийSpring + JDBC example, чтобы увидеть разницу между примерами до (без поддержки JdbcTemplate) и после (с поддержкой JdbcTemplate).

1. Пример без JdbcTemplate

Без JdbcTemplate вам нужно создать много избыточных кодов (создать соединение, закрыть соединение, обработать исключение) во всех методах работы с базой данных DAO - вставлять, обновлять и удалять. Это просто не эффективно, безобразно, подвержено ошибкам и утомительно.

    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. Пример с JdbcTemplate

С JdbcTemplate вы экономите много времени на вводе избыточных кодов, потому что JdbcTemplate будет обрабатывать это автоматически.

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

    }

Видишь разные?

3. Пример с JdbcDaoSupport

Благодаря расширению JdbcDaoSupport, установке источника данных и JdbcTemplate в вашем классе больше не требуется, вам просто нужно вставить правильный источник данных в JdbcCustomerDAO. И вы можете получить JdbcTemplate с помощью метода 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
При разработке Spring JDBC всегда рекомендуется использоватьJdbcTemplate иJdbcDaoSupport вместо кодирования кода JDBC самостоятельно.

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

Скачать -Spring-JDBC-Example.zip (15 КБ)