写在前面:
接着记录自己的Spring学习之旅,若看不懂xml配置则建议先看上一篇博客SSM之Spring文件配置/Spring怎么在pom文件中进行依赖注入/不同的依赖注入类型有哪些以及怎么写,详细代码可在我的Gitee仓库ssm-learning克隆下载学习使用!
用来管理、分配与连接数据库连接的技术,应用程序可以重复使用已有数据库连接而不必再建立!
注意:数据库是要自己安装的,这里已经安装好,是MySQL 8.0.12版,也可以安装5版的!
此次操作可参考SSM框架之Spring介绍开发流程/IDEA如何建立Spring项目操作!
在pom文件中添加MySQL的驱动依赖、数据库连接池依赖以及单元测试依赖,如图
添加完坐标后需要更新项目,之后才可看到新增的资源,如图
其中代码如下:
<dependencies>
<dependency>
<groupId>mysqlgroupId>
<artifactId>mysql-connector-javaartifactId>
<version>8.0.12version>
dependency>
<dependency>
<groupId>c3p0groupId>
<artifactId>c3p0artifactId>
<version>0.9.1.2version>
dependency>
<dependency>
<groupId>com.alibabagroupId>
<artifactId>druidartifactId>
<version>1.2.8version>
dependency>
<dependency>
<groupId>junitgroupId>
<artifactId>junitartifactId>
<version>4.13version>
<scope>testscope>
dependency>
dependencies>
public class dataSourceTest {
// 手动创建数据源c3p0
@Test
public void testDataSource() throws Exception {
ComboPooledDataSource comboPooledDataSource = new ComboPooledDataSource();
// Mysql 5版本驱动设置
// comboPooledDataSource.setDriverClass("com.mysql.jdbc.Driver");
// MySQL 8版本驱动设置
comboPooledDataSource.setDriverClass("com.mysql.cj.jdbc.Driver");
// 设置数据库url
comboPooledDataSource.setJdbcUrl("jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=GMT%2B8");
// 设置数据库用户名及密码
comboPooledDataSource.setUser("root");
comboPooledDataSource.setPassword("root");
// 获得数据库连接对象
Connection connection = comboPooledDataSource.getConnection();
// 测试
System.out.println(connection);
// 关闭数据库连接对象
connection.close();
}
}
// @Test
// 手动创建数据源druid
public void testDruid ()throws Exception
{
DruidDataSource druidDataSource = new DruidDataSource();
druidDataSource.setDriverClassName("com.mysql.cj.jdbc.Driver");
druidDataSource.setUrl("jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=GMT%2B8");
druidDataSource.setUsername("root");
druidDataSource.setPassword("root");
DruidPooledConnection connection = druidDataSource.getConnection();
System.out.println(connection);
connection.close();
}
}
#MySQL版本8以上使用
jdbc.driver = com.mysql.cj.jdbc.Driver
# MySQL 版本5使用
# jdbc.Driver = com.mysql.jdbc.Driver
jdbc.url = jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=GMT%2B8
jdbc.username = root
jdbc.password = root
public void testC3p0() throws Exception
{
// 这里是properties类型文件名
ResourceBundle resourceBundle = ResourceBundle.getBundle("jdbc");
String driver = resourceBundle.getString("jdbc.driver");
String url = resourceBundle.getString("jdbc.url");
String username = resourceBundle.getString("jdbc.username");
String password = resourceBundle.getString("jdbc.password");
// 创建数据源对象 ,以下都一样,druid同理
ComboPooledDataSource comboPooledDataSource = new ComboPooledDataSource();
comboPooledDataSource.setDriverClass(driver);
comboPooledDataSource.setJdbcUrl(url);
comboPooledDataSource.setUser(username);
comboPooledDataSource.setPassword(password);
// 获取连接
Connection connection = comboPooledDataSource.getConnection();
System.out.println(connection);
connection.close();
}
在pom文件中加入context依赖并刷新,如图
在resources目录下新建名为applicationContext的配置xml文件。
在applicationContext文件中配置以下代码
<bean id="DataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="driverClass" value="com.mysql.cj.jdbc.Driver"/>
<property name="jdbcUrl" value="jdbc:mysql://localhost:3306/test?useUnicode=true & characterEncoding=gbk &useSSL=false & serverTimezone=GMT%2B8"/>
<property name="user" value="root"/>
<property name="password" value="root"/>
bean>
为了降低配置文件与数据库的耦合性,将jdbc连接属性抽取出来单独放在一个文件中,如上文所提到的properties文件,在applicationContext中配置如下:
<context:property-placeholder location="classpath:jdbc.properties"/>
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="driverClass" value="${jdbc.driver}"/>
<property name="jdbcUrl" value="${jdbc.url}"/>
<property name="user" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
bean>
其中需要对applicationContext文件头做修改以便读取properties文件,如图