zoukankan      html  css  js  c++  java
  • Spring自学教程-jabc编程详解、RowMapper使用(三)

    一、JDBC

    1、JDBC的编程特点

         静态代码+动态变量 = jdbc编程。在spring中动态变量可以用注入的形式给予。这样的编程方式适合包装成模板。静态代码构成了模板,而动态变量则是需要传入的参数。

    2、Spring引入JDBC

        配置文件中配置数据库的连接

    1
    2
    3
    4
    5
    6
    7
    8
    9
    <!--
           配置dbcp的数据库连接池
       -->
       <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
           <property name="driverClassName" value="com.mysql.jdbc.Driver" />
           <property name="url" value="jdbc:mysql://localhost:3306/hibernate0909" />
           <property name="username" value="root" />
           <property name="password" value="root" />
       </bean>

    配置好后,我们就可以在客户端进行连接了,下面说些JdbcTemplate的事情。


    首先我们看下JdbcTemplate类,我们找到第一个划红圈的地方,就是我们在spring中配置的DataSource注入到JdbcTemplate中,我们就可以使用JdbcTemplate模板了。

    JdbcTemplate把所有的对数据库的操作都封装在了一起,第二个红圈就是我们想要的结果,这样省去了我们自己写的函数了,很像是别人写的类我们直接拿来用一样。。。。

    那我们怎样把DataSource传递给JdbcTemplate呢?

    下面我们看看这些相关的类是怎样调用的,也就是怎样依赖注入的



    这样我们就可以看出来他们的关系了,那我们就可以很直接的在客户端将DataSource注入到JdbcTemplate中了


    下面介绍三种方案来进行注入。。。

    (1)客户端通过继承JdbcDaoSupport来进行注入


    在JdbcDaoTemplate中有个setDataSource的set方法我们就可以注入datasource


    然后调用createJdbcTemplate


    之后在调用JdbcTemplate


    这样才真正的传入datasource了,相关的配置文件如下:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    <!--
           配置dbcp的数据库连接池
       -->
       <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
           <property name="driverClassName" value="com.mysql.jdbc.Driver" />
           <property name="url" value="jdbc:mysql://localhost:3306/hibernate0909" />
           <property name="username" value="root" />
           <property name="password" value="root" />
       </bean>
        
       <bean id="personDao" class="cn.itcast.spring0909.jdbc.PersonDaoImpl">
           <property name="dataSource">
               <ref bean="dataSource"/>
           </property>
       </bean>


    (2)直接引入JdbcTemplate就行了


    相关的配置文件如下:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
        <property name="dataSource">
            <ref bean="dataSource"/>
        </property>
    </bean>
     
    <bean id="personDao2" class="cn.itcast.spring0909.jdbc.PersonDaoImpl2">
        <property name="jdbcTemplate">
            <ref bean="jdbcTemplate"/>
        </property>
    </bean>


    (3)直接继承JdbcTemplate,通过构造函数向他的父类中传入datasource


    相关的配置文件如下:

    1
    2
    3
    <bean id="personDao3" class="cn.itcast.spring0909.jdbc.PersonDaoImpl2">
        <constructor-arg index="0" ref="dataSource"></constructor-arg>
    </bean>


    二、RowMapper的使用

     可以通过建立内部类实现RowMapper接口,RowMapper中有一个mapRow方法,所以实现RowMapper接口一定要实现mapRow方法,而对自定义类的包装就在mapRow方法中实现.

    下面说下他的原理是什么样的。。。就像我们自己写的RowMapper接口一样,只是spring中已经封装好了此类。







  • 相关阅读:
    【20170923】2017暑假北京学习 day 3
    Leetcode 39
    事无巨细 | 访问一个网站的过程
    Leetcode 77
    排序 | 快速排序
    排序 | 堆排序
    Leetcode 60
    Leetcode 51
    海量数据处理的解法
    Leetcode 99
  • 原文地址:https://www.cnblogs.com/wang3680/p/c665e246108c1c9abd637868852d9a77.html
Copyright © 2011-2022 走看看