<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")&&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>
<bean id="oneUserInfoManage" class="springj2seapp.UserInfoManage">
<constructor-arg>
<ref bean="oneUserInfo"/>
</constructor-arg>
<ref bean="dateBean"/>
<b><constructor-arg></b>
<b> <ref bean="oneDAOBean"/></b>
<b> </constructor-arg></b>
</bean>
<bean id="oneUserInfo" class="springj2seapp.UserInfo">
此時的使用者名稱和密碼可以是資料庫表中存在的
<property name="userName">
<b><value>admin</value></b>
</property>
新增加一個DataSource的聲明
<property name="userPassWord">
<bean id="dateBean" class="java.util.Date"/>
<b> <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"></b>
<b> <property name="driverClassName"></b>
<b> <value>com.microsoft.jdbc.sqlserver.SQLServerDriver</value></b>
<b> </property></b>
<b> <property name="url"></b>
<b> <value>jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=WebStudyDB</value></b>
<b> <property name="username"></b>
<b> <value>sa</value></b>
<b> <property name="password"></b>
<b> <value>1234</value></b>
<b></bean></b>
<b><bean id="oneDAOBean" class="springj2seapp.DAOInterfaceImpl"></b>
<b> <property name="dataSource"></b>
新增加一個DAO元件的聲明
<b> <ref bean="dataSource"/></b>
<b> </property></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中的其它的配置标簽不需要改變。
<bean id="dataSource" class="<b>org.apache.commons.dbcp.BasicDataSource</b>">
<property name="driverClassName">
<value>com.microsoft.jdbc.sqlserver.SQLServerDriver</value>
</property>
<property name="url">
<value>jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=WebStudyDB</value>
<property name="username">
<value>sa</value>
<property name="password">
<value>1234</value>
<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,如需轉載請自行聯系原作者