Spring JDBC的使用


1、為什么使用Spring提供的JDBC的封裝?

  因為Spring提供了完整的模板類以及基類可以簡化開發,我們只需寫少量的代碼即可。

2、實例講解

第一步:導入依賴  mysql-connector  spring-jdbc  spring-tx spring-core  spring-beans  spring-context 等等

第二步:數據庫的建立,配置xml

第三步:獲取jdbcTemplate對象

  可以這樣獲得

 private JdbcTemplate jdbcTemplate;

    public void setDataSource(DataSource dataSource){
        this.jdbcTemplate=new JdbcTemplate(dataSource);
} 
<bean id="userDao" class="com.test.jdbc.dao.impl.UserDaoImpl">
        <property name="dataSource" ref="dataSource"/>
</bean>

  也可以繼承JdbcDaoSupport,使用super.getJdbcTemplate()獲得

第四步:使用jdbcTemplate對象進行增刪改查

  增刪改使用update(),這個方法的參數,第一個為sql語句,之后為可變參數,傳入sql語句中的占位符

  查詢使用queryForObject()方法的第一個參數為sql中需要的參數,第三個參數為實現RowMapper接口的對象,

    用於處理結果集,該方法要求返回單一的對象

  query()該方法返回對象集合

public class UserDaoImpl extends JdbcDaoSupport implements IUserDao {

    public void save(User user) {
        super.getJdbcTemplate().update("insert into user(id,username,password,date,salary) values(null,?,?,?,?)",
                user.getUsername(),user.getPassword(),user.getDate(),user.getSalary());

    }

    public void update(User user) {
        super.getJdbcTemplate().update("update user set username=?,password=?,date=?,salary=? where id=?",
                user.getUsername(), user.getPassword(), user.getDate(), user.getSalary(), user.getId());

    }

    public void delete(Integer id) {
        super.getJdbcTemplate().update("delete from user where id=?",id);
    }

    public User findById(Integer id) {
       /* List<User> user = super.getJdbcTemplate().query("select * from user where id=?", new Object[]{id},
                new RowMapper<User>() {
                    @Override
                    public User mapRow(ResultSet resultSet, int i) throws SQLException {
                        User user = new User();
                        user.setId(resultSet.getInt("id"));
                        user.setDate(resultSet.getDate("date"));
                        user.setUsername(resultSet.getString("username"));
                        user.setPassword(resultSet.getString("password"));
                        user.setSalary(resultSet.getBigDecimal("salary"));
                        return user;
                    }
                    //方法的返回值會直接封裝到集合中
                });
        return user.size()>0?user.get(0):null;*/

        User user = super.getJdbcTemplate().queryForObject("select * from user where id=?", new Object[]{id},
                new RowMapper<User>() {
                    @Override
                    public User mapRow(ResultSet resultSet, int i) throws SQLException {
                        User user = new User();
                        user.setId(resultSet.getInt("id"));
                        user.setDate(resultSet.getDate("date"));
                        user.setUsername(resultSet.getString("username"));
                        user.setPassword(resultSet.getString("password"));
                        user.setSalary(resultSet.getBigDecimal("salary"));
                        return user;
                    }
                });
        return user;
    }

    public List<User> findAll() {
        List<User> users = super.getJdbcTemplate().query("select * from user",
                new RowMapper<User>() {
                    @Override
                    public User mapRow(ResultSet resultSet, int i) throws SQLException {
                        User user = new User();
                        user.setId(resultSet.getInt("id"));
                        user.setDate(resultSet.getDate("date"));
                        user.setUsername(resultSet.getString("username"));
                        user.setPassword(resultSet.getString("password"));
                        user.setSalary(resultSet.getBigDecimal("salary"));
                        return user;
                    }
                    //方法的返回值會直接封裝到集合中
                });
        return users;
    }

}

3、JdbcTemplate是JDBC核心包的中心類

  知識點查詢地址:

  https://docs.spring.io/spring-framework/docs/current/spring-framework-reference/data-access.html#jdbc

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM