SpringBoot项目经常要连接数据库,可以连接多种数据库,如msql、oracle、sqlserver等。连接数据库时,需要两个模块配合才能完成。一个是数据源类型模块,一个是数据库驱动模块。
数据源类型模块有很多种,比如:tomcat-jdbc、c3p0、hikari、druid等。
数据库驱动模块是跟数据库有关的,最常用的数据库是mysql,其驱动模块为:com.mysql.jdbc.Driver。
数据源类型模块
SpringBoot默认支持4种数据源类型(定义在 org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration 中),分别如下。
org.apache.tomcat.jdbc.pool.DataSource(springboot2.0以前默认是这个)
com.zaxxer.hikari.HikariDataSource(springboot2.0以后默认是这个)
org.apache.commons.dbcp.BasicDataSource
org.apache.commons.dbcp2.BasicDataSource
pom依赖为:
<dependencies>
<!-- 添加MySQL依赖 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<!-- 添加JDBC依赖,SpringBoot自带的 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<!-- 添加Tomcat-JDBC依赖 -->
<dependency>
<groupId>org.apache.tomcat</groupId>
<artifactId>tomcat-jdbc</artifactId>
</dependency>
<!-- 添加HikariCP依赖 -->
<dependency>
<groupId>com.zaxxer</groupId>
<artifactId>HikariCP</artifactId>
</dependency>
<!-- 添加DBCP依赖 -->
<dependency>
<groupId>commons-dbcp</groupId>
<artifactId>commons-dbcp</artifactId>
</dependency>
<!-- 添加DBCP2依赖 -->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-dbcp2</artifactId>
</dependency>
</dependencies>
当我们引入spring-boot-start-jdbc依赖时,其实里面就包含了 Tomcat-JDBC 的依赖。也就是说引入了spring-boot-start-jdbc依赖,就不用再引入Tomcat-JDBC 的依赖了。(从2.0开始,jdbc包里就不再引用tomcat-jdbc了,引用了HikariCP,意味着从2.0开始,默认的数据源类型为HikariCP了)
添加完依赖后,还需要在配置文件(application.properties或者application.yml)中进行配置。
# application.properties文件中添加如下配置:
spring.datasource.url=jdbc:mysql://localhost:3306/spd?characterEncoding=utf8
spring.datasource.driverClassName=com.mysql.jdbc.Driver
spring.datasource.username=root
spring.datasource.password=123456
切换数据源类型
在网上看到有两种方式:
方式一:排除其他的数据源依赖,仅保留需要的数据源依赖;
方式二:通过在核心配置中通过spring.datasource.type属性指定数据源的类型;
比如将数据源类型有tomcat-jdbc切换为HikariCP时。
方式一:
<!-- 添加jdbc,并排除Tomcat-JDBC -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
<exclusions>
<exclusion>
<groupId>org.apache.tomcat</groupId>
<artifactId>tomcat-jdbc</artifactId>
</exclusion>
</exclusions>
</dependency>
<!-- 添加HikariCP依赖 -->
<dependency>
<groupId>com.zaxxer</groupId>
<artifactId>HikariCP</artifactId>
</dependency>
方式二(推荐该方式):
spring.datasource.type=com.zaxxer.hikari.HikariDataSource
其他的数据源类型
如果想引用其他的数据源也可以。Druid、c3p0。
第一步添加依赖
<!-- 添加Druid依赖 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.6</version>
</dependency>
第二步配置文件进行配置
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
第三步定义数据源
@Configuration
public class DataSourceConfig {
@Autowired
private Environment env;
@Bean
public DataSource getDataSource() {
DruidDataSource dataSource = new DruidDataSource();
dataSource.setUrl(env.getProperty("spring.datasource.url"));
dataSource.setUsername(env.getProperty("spring.datasource.username"));
dataSource.setPassword(env.getProperty("spring.datasource.password"));
return dataSource;
}
}