体验 Spring 的“ IoC 容器”对开发过程中的简化 <?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

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

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

名称为DAOInterface,包名称为springj2seapp

<?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" />

在该接口中增加一个方法的定义

package springj2seapp;
import java.sql.ResultSet;
public interface DAOInterface
{
        public ResultSet SelectDBData(String select_SqlStatement);    //代表对数据的查询

public void closeCon();

}
2、再对该接口加以实现

       类名称为DAOInterfaceImpl,包名称为springj2seapp

编程该DAO组件类

package springj2seapp;
import java.sql.*;
import javax.sql.DataSource;
public class DAOInterfaceImpl implements DAOInterface
{
        DataSource dataSource=null;

        Connection con=null;

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

        public void setDataSource(DataSource dataSource)

        {

                  this.dataSource = dataSource;

        }

       public DAOInterfaceImpl()
       {
              super();
              // TODO 自动生成构造函数存根
       }
       public ResultSet SelectDBData(String select_SqlStatement)

       {
           try
           {
             con = dataSource.getConnection();
           }
           catch (SQLException ex)
           {
             System.out.println(ex.getMessage());
           }
           ResultSet rs=null;
           try
           {
             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());
           }
              return rs;

       }
       public void closeCon()

       {
              try
              {
                     con.close();
              }
              catch (SQLException e)
              {
                      System.out.println(e.getMessage());
              }
       }
}
3、修改前面的业务组件类

package springj2seapp;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Date;
public class UserInfoManage implements UserInfoInterface
{
       boolean okOrNot;
       private Date dateBean=null;  
       DAOInterface oneDAOBean=null;   

       public UserInfoManage()
       {
新增加一个 DAO 的对象参数
              super();
              // TODO 自动生成构造函数存根
       }
       public UserInfoManage(UserInfoVO oneUserInfo, Date dateBean, DAOInterface oneDAOBean)

       {
              this.dateBean=dateBean;
              this.oneDAOBean=oneDAOBean;

              doUserLogin(oneUserInfo);
              // TODO 自动生成构造函数存根
       }
       public  boolean doUserLogin(UserInfoVO oneUserInfo)
       {
              String userName=oneUserInfo.getUserName();
              String userUserPassWord=oneUserInfo.getUserPassWord();             
              String sqlText="select * from userInfo where userName ='"+userName+

                                       "' and userPassWord ='"+userUserPassWord+"'";

              ResultSet rs=oneDAOBean.SelectDBData(sqlText);

              try

              {

                     if(rs.next())

                     {

                            okOrNot=true;

                     }

                     else

                     {

                            okOrNot=false;

                     }

              }

              catch (SQLException e)

              {

                     e.printStackTrace();

记得注释掉下面的哦

              }

              oneDAOBean.closeCon();
              //okOrNot=userName.equals("yang")&&userUserPassWord.equals("1234");

              String loginTime=dateBean.toLocaleString();
              System.out.println("您的登录时间是:"+loginTime);
              return okOrNot;
       }
       public boolean getUserLogin()
       {
              return okOrNot;
       }    
}
4、在*.xml配置文件中添加DataSource以及DAO组件的注入

<bean id="oneUserInfoManage" class="springj2seapp.UserInfoManage">
  <constructor-arg>
      <ref bean="oneUserInfo"/>
  </constructor-arg>
  <constructor-arg>
       <ref bean="dateBean"/>
  </constructor-arg>
  <constructor-arg>

       <ref bean="oneDAOBean"/>

  </constructor-arg>

</bean>
<bean id="oneUserInfo" class="springj2seapp.UserInfo">
此时的用户名称和密码可以是数据库表中存在的
    <property name="userName">
              <value>admin</value>

       </property>
新增加一个 DataSource 的声明
       <property name="userPassWord">
              <value>admin</value>

       </property>
</bean>
  <bean id="dateBean" class="java.util.Date"/>   
  <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">

        <property name="driverClassName">

            <value>com.microsoft.jdbc.sqlserver.SQLServerDriver</value>

        </property>

        <property name="url">

            <value>jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=WebStudyDB</value>

        </property>

        <property name="username">

            <value>sa</value>

        </property>

        <property name="password">

            <value>1234</value>

        </property>

</bean>

<bean id="oneDAOBean"  class="springj2seapp.DAOInterfaceImpl">

       <property name="dataSource">

新增加一个 DAO 组件的声明
              <ref bean="dataSource"/>

       </property>

</bean>

5、启动数据库服务器

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

用户帐号为sa,并且密码为1234

6、将SQLServer2000JDBC驱动程序的*.jar文件导入到我们的项目中

msbase.jarmssqlserver.jarmsutil.jar

7、执行本程序

将出现下面的登录成功的提示

8、体验IoCDAO 的松散的支持

也可以对前面的DataSource改变为Apache DBCPDataSourceorg.apache.commons.dbcp.BasicDataSource

1)将*.xml中的DataSource的创建的实现类由

org.springframework.jdbc.datasource.DriverManagerDataSource

改变为org.apache.commons.dbcp.BasicDataSource

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

<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">

        <property name="driverClassName">

            <value>com.microsoft.jdbc.sqlserver.SQLServerDriver</value>

        </property>

        <property name="url">

            <value>jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=WebStudyDB</value>

        </property>

        <property name="username">

            <value>sa</value>

        </property>

        <property name="password">

            <value>1234</value>

        </property>

</bean>

  

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

commons-collections.jarcommons-dbcp-<?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" />1.2.1.jarcommons-pool-1.2.jar

3)再执行该项目

将出现下面的登录成功的提示