问题:设计一个 DAO组件,完成对某个数据库表的操作----将DataSource也注入到我们的程序中。
1、在本项目中再增加一个DAO的接口
名称为DAOInterface,包名称为springj2seapp
在该接口中增加一个方法的定义
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
的对象参数
|
// 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">
此时的用户名称和密码可以是数据库表中存在的
|
<value>admin</value>
</property>
新增加一个
DataSource
的声明
|
<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
组件的声明
|
</property>
</bean>
5、启动数据库服务器
并且应该有一个数据库文件WebStudyDB,在该数据库中有一个userInfo数据库表
用户帐号为sa,并且密码为1234
6、将SQLServer2000的JDBC驱动程序的*.jar文件导入到我们的项目中
msbase.jar、mssqlserver.jar和msutil.jar
7、执行本程序
将出现下面的登录成功的提示
8、体验IoC对DAO 的松散的支持
也可以对前面的DataSource改变为Apache DBCP的DataSource(org.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.jar、commons-dbcp-
1.2.1
.jar和commons-pool-1.2.jar
(3)再执行该项目
将出现下面的登录成功的提示
本文转自 weijie@java 51CTO博客,原文链接:http://blog.51cto.com/weijie/66499,如需转载请自行联系原作者