初学Spring不久,在配置数据库连接的时候花费了差不多一天时间,所以记下来以后以便查阅也方便了一下新手。
下面分别介绍是否使用C3P0连接池的两种方法。
两个项目结构均如下:
一.Spring+Myecilpse+SqlServer2012+C3P0配置
1.Spring相应包加入类路径下
这一步不用详细解释吧,如果你连Spring的包都不能引入,那你还是学了Spring再来吧!(最好不要使用Myecilpse右键导入自带的Spring包,我使用那些包缺少一些类,可能Myecilpse版本有些低了吧)
2.导入commons-logging.jar
一个日志包,必须导入3.创建applicationContext.xml和db.properties
applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans
xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd">
<!-- 声明数据源配置文件 -->
<context:property-placeholder location="classpath:db.properties"/>
<!-- C3P0的类的使用,property name="driverClass"的driverClass键这些都不要改变 -->
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="driverClass" value="${jdbc.driverClass}"></property>
<property name="jdbcUrl" value="${jdbc.jdbcUrl}"></property>
<property name="user" value="${jdbc.user}"> </property>
<property name="password" value="${jdbc.password}"></property>
</bean>
<!-- Spring文件中jdbcTemplate的使用 -->
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource" ref="dataSource"></property>
</bean>
</beans>
db.properties
//确认SQLServer数据库是SQlServer身份验证而不是windows身份验证,不是的话自行百度修改
jdbc.user=sa //driverClass和jdbcUrl随SQLServer版本不同可能有改变
jdbc.password=159357 //用户名密码端口视自己情况改变,1433是默认端口
jdbc.driverClass=com.microsoft.sqlserver.jdbc.SQLServerDriver
jdbc.jdbcUrl=jdbc:sqlserver://localhost:1433
4.导入C3P0.jar和sqljdbc4.jar(SQLServer连接驱动包)到类路径下
相关文件自行百度下载(后面我会放上Myecilpse完整项目结构的所有文件,可以自行下载)5.测试文件Main.java
package com.hello;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.jdbc.core.JdbcTemplate;
public class Main {
private static ApplicationContext ctx;
public static void main(String[] args) {
ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
//获取IoC容器中JdbcTemplate实例
JdbcTemplate jdbcTemplate=(JdbcTemplate) ctx.getBean("jdbcTemplate");
//必须声明数据库,表名前面dbo.可有可无
String sql="use sampledb insert into t_user (user_name,credits) values ('李子123546',1009)";
int count=jdbcTemplate.update(sql);
System.out.println(count);
}
}
二.Spring+Myecilpse+SqlServer2012配置
1.Spring相应包加入类路径下
这一步不用详细解释吧,如果你连Spring的包都不能引入,那你还是学了Spring再来吧!(最好不要使用Myecilpse右键导入自带的Spring包,我使用那些包缺少一些类,可能Myecilpse版本有些低了吧)2.导入commons-logging.jar
一个日志包,必须导入3.创建applicationContext.xml和db.properties,applicationContext.xml有所不同,db.properties同上
applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans
xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd">
<context:property-placeholder location="classpath:db.properties"/>
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="${jdbc.driverClass}"></property>
<property name="url" value="${jdbc.jdbcUrl}"></property>
<property name="username" value="${jdbc.user}"> </property> <!-- ${jdbc.user} -->
<property name="password" value="${jdbc.password}"></property>
</bean>
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource">
<ref bean="dataSource"/>
</property>
</bean>
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource" ref="dataSource"></property>
</bean>
<!-- 通过依赖注入userDao中的set方法将jdbcTemplate绑定 -->
<bean id="userDao" class="com.dao.userDao">
<property name="jdbcTemplate">
<ref bean="jdbcTemplate"/>
</property>
<property name="transactionManager">
<ref bean="transactionManager"/>
</property>
</bean>
</beans>
db.properties
//确认SQLServer数据库是SQlServer身份验证而不是windows身份验证,不是的话自行百度修改
jdbc.user=sa //driverClass和jdbcUrl随SQLServer版本不同可能有改变
jdbc.password=159357 //用户名密码端口视自己情况改变,1433是默认端口
jdbc.driverClass=com.microsoft.sqlserver.jdbc.SQLServerDriver
jdbc.jdbcUrl=jdbc:sqlserver://localhost:1433
4.sqljdbc4.jar到类路径下(注意没有C3P0这个包了)
相关文件自行百度下载(后面我会放上Myecilpse完整项目结构的所有文件,可以自行下载)5.userDao.java
package com.dao;
import org.springframework.dao.DataAccessException;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.transaction.PlatformTransactionManager;
import org.springframework.transaction.TransactionStatus;
import org.springframework.transaction.support.DefaultTransactionDefinition;
public class userDao {
private JdbcTemplate jdbcTemplate;
private PlatformTransactionManager transactionManager;
private String sql;
public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {
this.jdbcTemplate = jdbcTemplate;
}
public void setTransactionManager(PlatformTransactionManager transactionManager) {
this.transactionManager = transactionManager;
}
public void setSql(String sql) {
this.sql = sql;
}
public int create(String msg) {
DefaultTransactionDefinition defaultTransactionDefinition=new DefaultTransactionDefinition();
TransactionStatus status=transactionManager.getTransaction(defaultTransactionDefinition);
int count=-1;
try {
count=jdbcTemplate.update(this.sql);
} catch (DataAccessException e) {
// TODO: handle exception
transactionManager.rollback(status);
throw e;
}finally{
transactionManager.commit(status);
}
return count;
}
}
6.测试文件Main.java
package com.hello;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.dao.userDao;
public class Main {
public static void main(String[] args) {
// TODO Auto-generated method stub
@SuppressWarnings("resource")
ApplicationContext ctx=new ClassPathXmlApplicationContext("applicationContext.xml");
//获取IoC容器中JdbcTemplate实例
userDao userdao=(userDao) ctx.getBean("userDao");
//必须声明数据库,表名前面dbo.可有可无
String sql="use sampledb insert into t_user (user_name,credits) values ('李子',993)";
userdao.setSql(sql);
int count=userdao.create("123");
System.out.println(count);
}
}
最后:两个测试的Myecilpse导出项目如下:
C3P0_JDBCTemplate.zip
JDBCTemplate.zip