8、SpringBoot整合JDBC
第一种,通过自定义配置文件方式配置数据源信息
添加相关依赖
<!--thymeleaf启动器-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<!--JDBC启动器-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<!--mysql驱动器坐标,用于操作数据库-->
<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.38</version>
</dependency>
<!--Druid数据源依赖-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.12</version>
</dependency>
jdbc.properties,配置数据源
#添加对数据库的一些链接信息,因为数据源是要依赖于数据库连接信息去创建connection的
jdbc.driverClassName=com.mysql.jdbc.Driver
#userUnicode是否使用unicode字符集,characterEncoding字符编码,useSSL是否使用SSL这种连接方式对数据库进行连接,该方式安全性高
jdbc.url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8&useSSL=false
jdbc.username=root
jdbc.password=12345
jdbcConfiguration,引入数据源信息,并创建Druid连接池
@Configuration
@PropertySource("classpath:/jdbc.properties") //加载指定的Properties配置文件
public class jdbcConfiguration {
@Value("${jdbc.driverClassName}")
private String dirverClassName;
@Value("${jdbc.url}")
private String url;
@Value("${jdbc.username}")
private String username;
@Value("${jdbc.password}")
private String password;
/**
* 实例化Druid
*/
@Bean
public DataSource getDataSource(){
//创建Druid连接池
DruidDataSource source = new DruidDataSource();
source.setPassword(this.password);
source.setUsername(this.username);
source.setUrl(this.url);
source.setDriverClassName(this.dirverClassName);
return source;
}
}
Controller测试有没有数据源信息
@Controller
public class UsersController {
@Autowired
private DataSource dataSource;
@GetMapping("/showInfo")
public String showInfo(){
return "OK";
}
}
第二种,通过@ConfigurationProperties注解配置数据源
POM文件
<!--thymeleaf-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<!--jdbc-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<!--mysql连接-->
<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.38</version>
</dependency>
<!--Druid-->
<!-- https://mvnrepository.com/artifact/com.alibaba/druid -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.12</version>
</dependency>
配置类
@Configuration
public class jdbcConfiguration {
@Bean
//该注解是通过set方法将配置信息传入到对象的属性中,通过对象的属性名将配置信息中对应的属性注入进来
//该注解作用于方法上时就不需要@EnableConfigurationProperties注解了,只有在该注解作用于类上并用于读取配置信息时才需要用到
@ConfigurationProperties(prefix = "jdbc")
public DataSource getDataSource(){
DruidDataSource source = new DruidDataSource();
source.setUsername(); 通过该set方法去配置文件中查找jdbc为前缀,属性名为username的属性,将其注入到source对象的username属性中
source.setPassword();通过该set方法去配置文件中查找jdbc为前缀,属性名为password的属性,将其注入到source对象的password属性中
source.setUrl();通过该set方法去配置文件中查找jdbc为前缀,属性名为url的属性,将其注入到source对象的url属性中
source.setDriverClassName();通过该set方法去配置文件中查找jdbc为前缀,属性名为dirverClassName的属性,将其注入到source对象的dirverClassName属性中
return source;
}
}
controller
@Controller
public class UsersController {
@Autowired
DataSource dataSource;
@GetMapping("/showInfo")
public String show(){
return "ok";
}
}
第三种,通过SpringBoot配置文件配置数据源
之前的配置方式是外部文件配置,或application文件配置
- SpringBoot1.0时代,spring-boot-starter-jdbc默认使用org.apache.jdbc.pool,DataSource作为数据源
- SpringBoot2.0时代,spring-boot-starter-jdbc默认使用com.zaxxer.hikariDataSource作为数据源
使用SpringBoot默认的HikariDataSource数据源
spring.datasource.url=jdbc:mysql://localhost:3306/test?userUnicode=true&characterEncoding=utf-8&userSSL=false
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.username=root
spring.datasource.password=12345
controller
@RestController
public class UsersController {
@Autowired
private DataSource dataSource;
@GetMapping("/showInfo")
public String showInfo(){
return this.dataSource.getClass().getPackage().toString();
}
}
如果想切换成Druid数据源添加如下配置
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource