数据源(连接池)时提高程序性能而出现的 事先实例化数据源,初始化部分连接资源 使用连接资源时从数据源中获取 使用完毕后将连接资源归还给数据源
导入数据源的坐标和数据库驱动坐标 创建数据源对象 设置数据源的基本连接数据 使用数据源获取连接资源和归还连接资源
本文主要讲述以下几种配置数据源方式:
为了方便,我就直接在测试文件里面编写代码
package com.ssm.test; import com.alibaba.druid.pool.DruidDataSource; import com.alibaba.druid.pool.DruidPooledConnection; import com.mchange.v2.c3p0.ComboPooledDataSource; import org.junit.Test; import java.sql.Connection; import java.util.ResourceBundle; public class DateSourceTest { @Test // 测试手动创建C3P0数据源 public void test1() throws Exception { ComboPooledDataSource dataSource = new ComboPooledDataSource(); dataSource.setDriverClass("com.mysql.jdbc.Driver"); // 括号里面的内容需要对应改成自己数据库的地址 dataSource.setJdbcUrl("jdbc:mysql://localhost:3306/db1"); // 注意更改数据库用户名 dataSource.setUser("root"); // 注意改成对应用户名的密码 dataSource.setPassword("root"); Connection connection = dataSource.getConnection(); System.out.println(connection); connection.close(); } @Test // 测试手动创建Druid数据源 public void test2() throws Exception { DruidDataSource dataSource = new DruidDataSource(); dataSource.setDriverClassName("com.mysql.jdbc.Driver"); // 括号里面的内容需要对应改成自己数据库的地址 dataSource.setUrl("jdbc:mysql://localhost:3306/db1"); // 注意更改数据库用户名 dataSource.setUsername("root"); // 注意改成对应用户名的密码 dataSource.setPassword("root"); DruidPooledConnection connection = dataSource.getConnection(); System.out.println(connection); connection.close(); } @Test // 测试手动创建C3P0数据源(加载配置文件形式) public void test3() throws Exception { // 读取配置文件 // 注意与properties文件名相对应 ResourceBundle rb = ResourceBundle.getBundle("jdbc"); // 以下注意与文件名中的变量相对应 String driver = rb.getString("jdbc.driver"); String url = rb.getString("jdbc.url"); String username = rb.getString("jdbc.username"); String password = rb.getString("jdbc.password"); // 创建数据源对象,设置连接参数 ComboPooledDataSource dataSource = new ComboPooledDataSource(); dataSource.setDriverClass(driver); dataSource.setJdbcUrl(url); dataSource.setUser(username); dataSource.setPassword(password); Connection connection = dataSource.getConnection(); System.out.println(connection); connection.close(); } @Test // 测试自动创建C3P0数据源 public void test4() throws Exception{ ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml"); DataSource dataSource = applicationContext.getBean(DataSource.class); Connection connection = dataSource.getConnection(); System.out.println(connection); connection.close(); } @Test // 测试Spring容器产生数据源对象 public void test5() throws Exception{ ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml"); DataSource dataSource = applicationContext.getBean(DataSource.class); Connection connection = dataSource.getConnection(); System.out.println(connection); connection.close(); } }
test3需要有一个名为jdbc.properties的文件配合
jdbc.driver=com.mysql.jdbc.Driver jdbc.url=jdbc:mysql://localhost:3306/db1 jdbc.username=root jdbc.password=root
test4需要有一个名为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" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"> // 设置参数 <property name="driverClass" value="com.mysql.jdbc.Driver"></property> <property name="jdbcUrl" value="jdbc:mysql://localhost:3306/db1"></property> <property name="user" value="root"></property> <property name="password" value="root"></property> </bean> </beans>
test5与test4类似,只是test4的参数是直接放在了applicationContext.xml中,而test5的参数放在了test3所在的jdbc.properties文件中,并且applicationContext.xml做了一些细微的改动。注意:${}里面的参数名必须与jdbc.properties中的一一对应
<?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:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> <!-- 加载外部的properties文件 --> <context:property-placeholder location="classpath:jdbc.properties" /> <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"> <property name="driverClass" value="${jdbc.driver}"></property> <property name="jdbcUrl" value="${jdbc.url}"></property> <property name="user" value="${jdbc.username}"></property> <property name="password" value="${jdbc.password}"></property> </bean> </beans>