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
posted @ 2020-08-28 12:55  lawrence林  阅读(148)  评论(0编辑  收藏  举报