第四章:Spring項目對JDBC的支持

歡迎查看Java開發之上帝之眼系列教程,如果您正在爲Java後端龐大的體系所困擾,如果您正在爲各種繁出不窮的技術和各種框架所迷茫,那麼本系列文章將帶您窺探Java龐大的體系。本系列教程希望您能站在上帝的角度去觀察(瞭解)Java體系。使Java的各種後端技術在你心中模塊化;讓你在工作中能將Java各個技術瞭然於心;能夠即插即用。本章我們來一起了解Spring對JDBC的支持和基本使用。

Spring對數據訪問提供的支持

  • 提供於平臺無關的的持久化異常體系
  • 提供模板簡化數據持久化開發

提供於平臺無關的的持久化異常體系

Spring對JDBC的SQLException進行封裝,你不需要做什麼;只需要將SpringJDBC的Jar包導入即可,這樣你就可以在Spring所支持的數據訪問模板中享受到這些異常^~~^

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-jdbc</artifactId>
            <version>4.1.1.RELEASE</version>
        </dependency>

提供模板簡化數據持久化開發

針對不同的持久化平臺,Spring提供了多個可選則使用的模板,常用的模板類如下

模板類 用途
jdbc.core.JdbcTemplate JDBC的鏈接
orm.jdo.JdoTemplate Java數據對象實現
orm.jpa.JpaTemplate Java持久化API的實體管理器
orm.ibatis.SqlMapClientTemplate IBATIS SqlMap客戶端
orm.hibernate3.HibernateTemplate Hibernate3.x以上的Session

裝配數據源

無論你使用哪一種模板類,你都需要配置一個數據源的引用,Spring提供了在Spring上下文中配置數據源Bean的多種方式

  • 通過JDBC驅動程序定義的數據源
  • 通過JNDI查找數據源
  • 連接池的數據源

具體詳細的數據源裝配,我會另開一篇進行解析介紹,在本篇案例中使用的是阿里巴巴的druid連接池,使用過程如下
加載依賴

        <!-- https://mvnrepository.com/artifact/com.alibaba/druid -->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.1.12</version>
        </dependency>

配置數據源

    @Bean
    public DruidDataSource dataSource() {
        DruidDataSource ds = new DruidDataSource();
        ds.setDriverClassName(environment.getProperty("jdbc.driver"));
        ds.setUrl(environment.getProperty("jdbc.url"));
        ds.setUsername(environment.getProperty("jdbc.username"));
        ds.setPassword(environment.getProperty("jdbc.password"));
        ds.setInitialSize(5);
        return ds;
    }

配置JDBC模板類

    @Bean
    public JdbcTemplate jdbcTemplate(DataSource dataSource) {
        return new JdbcTemplate(dataSource);
    }

Dao層相關代碼

    @Autowired
    private JdbcOperations jdbcOperations;
    
    @Override
    public User getUser(String username) {
        List<User> query = jdbcOperations.query(SELECT_USER_BY_ID, new UserRowMapper(), username);
        return query.get(0);
    }

本章完整代碼地址:完整項目下載地址點擊此處

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章