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 都市淘沙者 閱讀(761) 評論(0)  編輯  收藏 所屬分類: Spring+Struts+Hibernate

          主站蜘蛛池模板: 田林县| 汝城县| 丹江口市| 渭源县| 宁夏| 阳曲县| 汶上县| 嘉兴市| 格尔木市| 长泰县| 沾益县| 临城县| 望都县| 巩义市| 津市市| 深圳市| 广安市| 瑞安市| 樟树市| 保德县| 高阳县| 巴彦淖尔市| 中山市| 舒兰市| 密云县| 湟源县| 威海市| 淳化县| 溧水县| 班玛县| 望江县| 呼图壁县| 五指山市| 延寿县| 独山县| 永昌县| 泽普县| 德惠市| 阳高县| 乌鲁木齐市| 永泰县|