SSM之Spring数据源的设置/怎么在Spring中连接数据库/在xml中配置数据库

写在前面
接着记录自己的Spring学习之旅,若看不懂xml配置则建议先看上一篇博客SSM之Spring文件配置/Spring怎么在pom文件中进行依赖注入/不同的依赖注入类型有哪些以及怎么写,详细代码可在我的Gitee仓库ssm-learning克隆下载学习使用!

1.5 Spring数据源/连接池

1.5.1 数据连接池

用来管理、分配与连接数据库连接的技术,应用程序可以重复使用已有数据库连接而不必再建立!

1.5.2 常用数据连接池分类(Java中)

  • c3p0 :开放源代码JDBC连接池
  • Proxool :Java SQL Driver驱动程序,提供了对选择的其它类型的驱动程序的连接池封装,较为常用
  • DBPool:一个高效、易配置的数据库连接池
  • BoneCP::一个快速、开源的数据库连接池,比C3P0/DBCP连接池速度快25倍
  • Druid:支持所有JDBC兼容的数据库,包括Oracle、MySql、Derby、Postgresql、SQL Server、H2等,对Oracle和MySql做了优化,最为常用

1.5.3 作用

  • 能提高程序性能
  • 实例化数据库时,初始化部分连接资源
  • 连接资源从数据源中获取
  • 使用完毕归还给数据源

1.5.4 开发步骤

  • 导入数据源坐标和数据库驱动坐标
  • 创建数据源对象
  • 设置数据源的基本连接数据,如驱动、数据库地址、用户名和密码等
  • 获取连接资源和归还连接资源

1.5.5 数据源创建

注意:数据库是要自己安装的,这里已经安装好,是MySQL 8.0.12版,也可以安装5版的!

1.5.5.1 手动创建(熟悉原理)

1.5.5.1.1 创建新项目

此次操作可参考SSM框架之Spring介绍开发流程/IDEA如何建立Spring项目操作!

1.5.5.1.2 添加坐标

在pom文件中添加MySQL的驱动依赖、数据库连接池依赖以及单元测试依赖,如图
SSM之Spring数据源的设置/怎么在Spring中连接数据库/在xml中配置数据库_第1张图片
添加完坐标后需要更新项目,之后才可看到新增的资源,如图
SSM之Spring数据源的设置/怎么在Spring中连接数据库/在xml中配置数据库_第2张图片
其中代码如下:

  
 <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>
1.5.5.1.3 测试数据库
  • 在测试文件夹下新建测试类,输入以下代码:
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();  
	}  
}
  • 分别运行两个数据源测试函数,出现以下结果即为成功,如图
    SSM之Spring数据源的设置/怎么在Spring中连接数据库/在xml中配置数据库_第3张图片
    备注:
    若运行失败,出现如图错误,SSM之Spring数据源的设置/怎么在Spring中连接数据库/在xml中配置数据库_第4张图片
    可在file->settings->Build->Maven->Runner更改设置,如图SSM之Spring数据源的设置/怎么在Spring中连接数据库/在xml中配置数据库_第5张图片
1.5.5.1.4 简化jdbc参数创建数据源
  • 在test目录下的resources文件夹中创建一个名叫jdbc的properties类型文件,输入数据库连接参数,如下:
#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();  
 }
  • 测试运行结果,如图SSM之Spring数据源的设置/怎么在Spring中连接数据库/在xml中配置数据库_第6张图片

1.5.5.2 Spring容器配置

1.5.5.2.1 配置依赖及xml文件

在pom文件中加入context依赖并刷新,如图SSM之Spring数据源的设置/怎么在Spring中连接数据库/在xml中配置数据库_第7张图片
在resources目录下新建名为applicationContext的配置xml文件。

1.5.5.2.2 配置数据源

在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>
1.5.5.2.3 外部jdbc文件配置数据源

为了降低配置文件与数据库的耦合性,将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文件,如图
SSM之Spring数据源的设置/怎么在Spring中连接数据库/在xml中配置数据库_第8张图片

1.5.5.2.3 测试

同[[#1 2 2 7 测试项目]]操作分别测试两种配置方式,如图SSM之Spring数据源的设置/怎么在Spring中连接数据库/在xml中配置数据库_第9张图片
结果依然可以运行,如图![[Pasted image 20211110212505.png]]

你可能感兴趣的:(Java,编程,Spring,spring,数据库,xml)