天天看点

体验Spring的“IoC容器”对开发过程中的简化

<b>问题:</b>设计一个 DAO组件,完成对某个数据库表的操作----将DataSource也注入到我们的程序中。

<b>1</b><b>、在本项目中再增加一个DAO</b><b>的接口</b>

名称为DAOInterface,包名称为springj2seapp

<b></b>

<b>在该接口中增加一个方法的定义</b>

package springj2seapp;

import java.sql.ResultSet;

public interface DAOInterface

{

       <b> public ResultSet SelectDBData(String select_SqlStatement);    //</b><b>代表对数据的查询</b>

<b>public void closeCon();</b>

}

<b>2</b><b>、再对该接口加以实现</b>

<b>       </b>类名称为DAOInterfaceImpl,包名称为springj2seapp

<b>编程该DAO</b><b>组件类</b>

import java.sql.*;

import javax.sql.DataSource;

public class DAOInterfaceImpl implements DAOInterface

        <b>DataSource dataSource=null;</b>

<b>        Connection con=null;</b>

<b>//</b><b>以便能够将dataSource</b><b>以属性注入的方式来注入</b>

<b>        public void setDataSource(DataSource dataSource)</b>

<b>        {</b>

<b>                  this.dataSource = dataSource;</b>

<b>        }</b>

       public DAOInterfaceImpl()

       {

              super();

              // TODO 自动生成构造函数存根

       }

       <b>public ResultSet SelectDBData(String select_SqlStatement)</b>

           try

           {

             con = dataSource.getConnection();

           }

           catch (SQLException ex)

             System.out.println(ex.getMessage());

           ResultSet rs=null;

             java.sql.PreparedStatement pstmt = con.prepareStatement(select_SqlStatement,

                 ResultSet.TYPE_SCROLL_SENSITIVE,

                 ResultSet.CONCUR_UPDATABLE);

             rs = pstmt.executeQuery();

           catch (SQLException e)

             System.out.println(e.getMessage());

       <b>       return rs;</b>

       <b>public void closeCon()</b>

              try

              {

                     con.close();

              }

              catch (SQLException e)

                      System.out.println(e.getMessage());

<b>3</b><b>、修改前面的业务组件类</b>

import java.sql.SQLException;

import java.util.Date;

public class UserInfoManage implements UserInfoInterface

       boolean okOrNot;

       private Date dateBean=null;  

       <b>DAOInterface oneDAOBean=null;   </b>

       public UserInfoManage()

新增加一个DAO的对象参数

       <b>public UserInfoManage(UserInfoVO oneUserInfo, Date dateBean, DAOInterface oneDAOBean)</b>

              this.dateBean=dateBean;

       <b>       this.oneDAOBean=oneDAOBean;</b>

              doUserLogin(oneUserInfo);

       public  boolean doUserLogin(UserInfoVO oneUserInfo)

              String userName=oneUserInfo.getUserName();

              String userUserPassWord=oneUserInfo.getUserPassWord();             

<b>              String sqlText="select * from userInfo where userName ='"+userName+</b>

<b>                                       "' and userPassWord ='"+userUserPassWord+"'";</b>

<b>              ResultSet rs=oneDAOBean.SelectDBData(sqlText);</b>

<b>              try</b>

<b>              {</b>

<b>                     if(rs.next())</b>

<b>                     {</b>

<b>                            okOrNot=true;</b>

<b>                     }</b>

<b>                     else</b>

<b>                            okOrNot=false;</b>

<b>              }</b>

<b>              catch (SQLException e)</b>

<b>                     e.printStackTrace();</b>

记得注释掉下面的哦

<b>              oneDAOBean.closeCon();</b>

       <b>       //okOrNot=userName.equals("yang")&amp;&amp;userUserPassWord.equals("1234");</b>

              String loginTime=dateBean.toLocaleString();

              System.out.println("您的登录时间是:"+loginTime);

              return okOrNot;

       public boolean getUserLogin()

       }    

<b>4</b><b>、在*.xml</b><b>配置文件中添加DataSource</b><b>以及DAO</b><b>组件的注入</b>

&lt;bean id="oneUserInfoManage" class="springj2seapp.UserInfoManage"&gt;

  &lt;constructor-arg&gt;

      &lt;ref bean="oneUserInfo"/&gt;

  &lt;/constructor-arg&gt;

       &lt;ref bean="dateBean"/&gt;

  <b>&lt;constructor-arg&gt;</b>

<b>       &lt;ref bean="oneDAOBean"/&gt;</b>

<b>  &lt;/constructor-arg&gt;</b>

&lt;/bean&gt;

&lt;bean id="oneUserInfo" class="springj2seapp.UserInfo"&gt;

此时的用户名称和密码可以是数据库表中存在的

    &lt;property name="userName"&gt;

              <b>&lt;value&gt;admin&lt;/value&gt;</b>

       &lt;/property&gt;

新增加一个DataSource的声明

       &lt;property name="userPassWord"&gt;

  &lt;bean id="dateBean" class="java.util.Date"/&gt;   

<b>  &lt;bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"&gt;</b>

<b>        &lt;property name="driverClassName"&gt;</b>

<b>            &lt;value&gt;com.microsoft.jdbc.sqlserver.SQLServerDriver&lt;/value&gt;</b>

<b>        &lt;/property&gt;</b>

<b>        &lt;property name="url"&gt;</b>

<b>            &lt;value&gt;jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=WebStudyDB&lt;/value&gt;</b>

<b>        &lt;property name="username"&gt;</b>

<b>            &lt;value&gt;sa&lt;/value&gt;</b>

<b>        &lt;property name="password"&gt;</b>

<b>            &lt;value&gt;1234&lt;/value&gt;</b>

<b>&lt;/bean&gt;</b>

<b>&lt;bean id="oneDAOBean"  class="springj2seapp.DAOInterfaceImpl"&gt;</b>

<b>       &lt;property name="dataSource"&gt;</b>

新增加一个DAO组件的声明

<b>              &lt;ref bean="dataSource"/&gt;</b>

<b>       &lt;/property&gt;</b>

<b>5</b><b>、启动数据库服务器</b>

<b>并且应该有一个数据库文件WebStudyDB</b><b>,在该数据库中有一个userInfo</b><b>数据库表</b>

<b>用户帐号为sa,</b><b>并且密码为1234</b>

<b>6</b><b>、将SQLServer2000</b><b>的JDBC</b><b>驱动程序的*.jar</b><b>文件导入到我们的项目中</b>

<b>msbase.jar</b><b>、mssqlserver.jar</b><b>和msutil.jar</b>

<b>7</b><b>、执行本程序</b>

<b>将出现下面的登录成功的提示</b>

<b>8</b><b>、体验IoC</b><b>对DAO </b><b>的松散的支持</b>

<b>也可以对前面的DataSource</b><b>改变为Apache DBCP</b><b>的DataSource</b><b>(org.apache.commons.dbcp.BasicDataSource</b><b>)</b>

<b>(1</b><b>)将*.xml</b><b>中的DataSource</b><b>的创建的实现类由</b>

<b>org.springframework.jdbc.datasource.DriverManagerDataSource</b>

<b>改变为org.apache.commons.dbcp.BasicDataSource</b><b>。</b>

<b>注意:</b>*.xml中的其它的配置标签不需要改变。

&lt;bean id="dataSource" class="<b>org.apache.commons.dbcp.BasicDataSource</b>"&gt;

        &lt;property name="driverClassName"&gt;

            &lt;value&gt;com.microsoft.jdbc.sqlserver.SQLServerDriver&lt;/value&gt;

        &lt;/property&gt;

        &lt;property name="url"&gt;

            &lt;value&gt;jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=WebStudyDB&lt;/value&gt;

        &lt;property name="username"&gt;

            &lt;value&gt;sa&lt;/value&gt;

        &lt;property name="password"&gt;

            &lt;value&gt;1234&lt;/value&gt;

<b>  </b>

<b>(2</b><b>)在本项目中添加对应的DBCP</b><b>的驱动程序的*.jar</b><b>包文件</b>

<b>commons-collections.jar</b><b>、commons-dbcp-1.2.1.jar</b><b>和commons-pool-1.2.jar</b>

<b>(3</b><b>)再执行该项目</b>

<b></b> 

<b> </b>

本文转自 weijie@java 51CTO博客,原文链接:http://blog.51cto.com/weijie/66499,如需转载请自行联系原作者