1.beans.xml
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/myblog"/>
<property name="username" value="root"/>
<property name="password" value="root"/>
</bean>
这个不用多说了
2.在IUserDAOImpl.java 中需要注入一个DataSource,然后得到一个Connection 然后对数据库进行操作
package org.sh.spring.impl;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.List;
import java.util.Map;
import java.util.Set;
import javax.annotation.Resource;
import javax.sql.DataSource;
import org.sh.spring.DAO.IUserDAO;
import org.sh.spring.model.User;
import org.springframework.stereotype.Component;
@Component("u")
public class IUserDAOImpl implements IUserDAO {
private DataSource dataSource;
private Set<String> sets;
private List<String> lists;
public DataSource getDataSource() {
return dataSource;
}
@Resource
public void setDataSource(DataSource dataSource) {
this.dataSource = dataSource;
}
public IUserDAOImpl() {
}
@Override
public void save(User user) {
try {
Connection conn = dataSource.getConnection();
conn.createStatement().executeUpdate("insert into users(username,password) values('suhao1','suhao')");
} catch (SQLException e) {
e.printStackTrace();
}
System.out.println("user saved");
}
@Override
public String toString() {
return "daoID=" + this.daoId;
}
}
3.测试程序:
@Test
public void testSave() {
ClassPathXmlApplicationContext ctx = new ClassPathXmlApplicationContext("beans.xml");
IUserDAO ud = (IUserDAO)ctx.getBean("userservice");
System.out.println(ud.getClass());
User u = new User();
ud.save(u);
}
测试结果:
method start...
user saved
数据库查看
最后一条数据位插入的数据,注入导入DataSource需要使用到的包:
并且把 数据库连接的jar也导入项目 我使用的是mysql数据库 导入mysqljdbc即可
总结:
1. Spring 指定datasource
a) 参考文档,找dbcp.BasicDataSource
i. c3p0
ii. dbcp
iii. proxool
b) 在DAO或者Service中注入dataSource
c) 在Spring中可以使用PropertyPlaceHolderConfigure来读取Properties文件的内容
使用PropertyPlaceHolderConfigure来读取Properties文件:
bean.xml
<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<value>classpath:jdbc.properties</value>
</property>
</bean>
<bean id="dataSource" destroy-method="close"
class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName" value="${jdbc.driverClassName}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
</bean>
${jdbc.driverClassName} 将会到locations指定的位置 jdbc.properties 文件中查找;
jdbc.properties:
jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/myblog
jdbc.username=root
jdbc.password=root
测试结果:
class $Proxy6
method start...
user saved