<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,如需转载请自行联系原作者