Dict.CN 在線詞典, 英語學習, 在線翻譯

          都市淘沙者

          荔枝FM Everyone can be host

          統計

          留言簿(23)

          積分與排名

          優秀學習網站

          友情連接

          閱讀排行榜

          評論排行榜

          Eclipse中利用Spring的JDBC模板寫DAO

           

          DAO應該是現在比較流行的一種開發模式.不管是用什么更新的技術,hibernate或者其它的.DAO模式是應該遵循的.
          我寫DAO大概是這樣的:一個DAO接口,定義好要實現的方法名稱;一個Impl實現類,主要控制連接及關閉數據庫;
          接下來會有一個寫具體方法的數據庫實現類;還有一個工廠類,可以更靈活的取得不同的DAO.
          上面的寫法感覺上不錯,但是寫起來比較麻煩,而且如果使用數據庫連接池的活,利用JUnit做測試的時候會比較麻煩.
          下面我們利用Spring的JDBC模板寫一個DAO測試實例,你會發現它是如此的簡單且實用.
          使用的了DBCP的連接池.

          下面是要引入的JAR包
              <classpathentry kind="lib" path="D:/classes/spring.jar"/>
              <classpathentry kind="lib" path="D:/classes/junit-3.8.1.jar"/>
              <classpathentry kind="lib" path="D:/classes/spring-dao.jar"/>
              <classpathentry kind="lib" path="D:/classes/mysql-connector-java-3.0.9-stable-bin.jar"/>
              <classpathentry kind="lib" path="D:/classes/commons-dbcp-1.1.jar"/>
              <classpathentry kind="lib" path="D:/classes/commons-pool-1.1.jar"/>
              <classpathentry kind="lib" path="D:/classes/commons-collections.jar"/>
              <classpathentry kind="lib" path="D:/classes/commons-beanutils.jar"/>
              <classpathentry kind="lib" path="D:/classes/commons-lang-2.0.jar"/>
              <classpathentry kind="lib" path="D:/classes/commons-logging-1.0.3.jar"/>

          SpringDao.java文件

          package com.bcxy.spring.dao;

          import java.sql.PreparedStatement;
          import java.sql.ResultSet;
          import java.sql.SQLException;
          import java.util.ArrayList;
          import java.util.List;

          import javax.sql.DataSource;

          import org.apache.commons.logging.Log;
          import org.apache.commons.logging.LogFactory;
          import org.springframework.jdbc.core.JdbcTemplate;
          import org.springframework.jdbc.core.PreparedStatementSetter;
          import org.springframework.jdbc.core.RowCallbackHandler;

          import com.bcxy.spring.dao.model.TestModel;

          public class SpringDao {

           DataSource ds = null;
           
           JdbcTemplate jt = null;
           
           Log log = LogFactory.getLog(SpringDao.class);
           
           public List springQuery(){
            final List tests = new ArrayList();
            String sql = " select * from test ";
            jt = new JdbcTemplate(ds);
            jt.query(sql, new RowCallbackHandler(){

             public void processRow(ResultSet rs) throws SQLException {
              //
              TestModel tm = new TestModel();
              tm.setId(rs.getInt("id"));
              tm.setPw(rs.getString("pw"));
              tm.setUn(rs.getString("un"));
              //
              tests.add(tm);
             }
            });
            return tests;
           }
           
           public void springUpdate() {
            String sql = "update test set pw=? where id=?";
            jt = new JdbcTemplate(ds);
            jt.update(sql, new PreparedStatementSetter() {
             public void setValues(PreparedStatement ps) throws SQLException {
              //
              ps.setString(1, "maxcard");
              ps.setInt(2, 1);
             }
            });
            log.info("update test a record.");
           }

           /**
            * @return
            */
           public DataSource getDs() {
            return ds;
           }

           /**
            * @param source
            */
           public void setDs(DataSource source) {
            ds = source;
           }

          }

          Spring配置文件

          <?xml version="1.0" encoding="UTF-8" ?>
          <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "<beans>
          <description>Spring Quick Start</description>
          <!-- datasource -->
          <bean id="datasource"
                class="org.apache.commons.dbcp.BasicDataSource"
                destroy-method="close">
              <property name="driverClassName">
                  <value>com.mysql.jdbc.Driver</value>
              </property>
              <property name="url">
                  <value>jdbc:mysql://localhost/test</value>
              </property>
              <property name="username">
                  <value>root</value>
              </property>
              <property name="password">
                  <value></value>
              </property>
          </bean>
          <!-- test dao -->
          <bean id="testdao"
                class="com.bcxy.spring.dao.SpringDao"
                >
              <property name="ds">
                  <ref local="datasource"/>
              </property>
          </bean>

          </beans>

          下面我們用JUnit測試一下:
          ......

           public void testSpringUpdate() throws FileNotFoundException {
               //
            InputStream is = new FileInputStream("bean.xml");
            XmlBeanFactory bean = new XmlBeanFactory(is);
            SpringDao sd = (SpringDao)bean.getBean("testdao");
            sd.springUpdate();
           }

          posted on 2006-02-23 17:37 都市淘沙者 閱讀(759) 評論(0)  編輯  收藏 所屬分類: Spring+Struts+Hibernate

          主站蜘蛛池模板: 巴彦县| 河池市| 江津市| 阿勒泰市| 祁门县| 晋州市| 姜堰市| 彝良县| 延边| 阿尔山市| 曲麻莱县| 卢龙县| 鄂托克前旗| 贵德县| 通渭县| 格尔木市| 内丘县| 元朗区| 化隆| 长宁县| 夏津县| 余姚市| 克什克腾旗| 泰来县| 宾川县| 鄂托克前旗| 靖宇县| 敦煌市| 永春县| 江北区| 始兴县| 囊谦县| 馆陶县| 鄂尔多斯市| 沅陵县| 达孜县| 略阳县| 古交市| 友谊县| 凌海市| 霍林郭勒市|