SpringBoot构建微服务实战 之 DataSource(一)

前言

首先在学习本节之前,我们应该知道SpringBoot 提供了基本的JDBC dataSource Type,2.0V+ SpringBoot JDBC 默认的DataSource是:com.zaxxer.hikari.HikariDataSource 。1.4V+的是:org.apache.tomcat.jdbc.pool.DataSource
另外除了SpringBoot 提供的基本的JDBC dataSource之外,我们还必须要知道SpringBoot 是可以配置其他数据源的比如dbcp/c3p0/durid等等。

本节我们将学习一下如何使用SpringBoot 来整合并使用默认的JDBC dataSource,此处我们以SringBoot 2.0.2.RELEASE 为演示例子。


概要

下面我们将通过学习一个实际的例子来学习一下如何配置Spring dataSource。

  • 使用Maven构建SpringBoot Project。
    这里写图片描述

  • POM.xml

    <parent>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <!-- <version>1.5.13.RELEASE</version> -->
            <version>2.0.2.RELEASE</version>
            <relativePath/> <!-- lookup parent from repository -->
        </parent>
    
        <properties>
            <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
            <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
            <java.version>1.8</java.version>
        </properties>
    
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-jdbc</artifactId>
            </dependency>
    
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <scope>runtime</scope>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-test</artifactId>
                <scope>test</scope>
            </dependency>
        </dependencies>
    
        <build>
            <plugins>
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                </plugin>
            </plugins>
        </build>
  • application.properties

    spring.datasource.username=root
    spring.datasource.password=bai5331359
    spring.datasource.url=jdbc:mysql://localhost:3306/demo2?useUnicode=true&characterEncoding=utf8&useSSL=false&zeroDateTimeBehavior=convertToNull
    spring.datasource.driver-class-name=com.mysql.jdbc.Driver
    
    #spring.datasource.type=org.apache.commons.dbcp2.BasicDataSource
    
    
  • 表数据信息
    这里写图片描述
    在demo2 DB 中有个qrtz_locks表,表中有两条数据

  • JdbcExmapleApplicationTests.java

    import java.sql.SQLException;
    import java.util.List;
    import java.util.Map;
    
    import javax.sql.DataSource;
    
    import org.junit.Test;
    import org.junit.runner.RunWith;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.boot.test.context.SpringBootTest;
    import org.springframework.jdbc.core.JdbcTemplate;
    import org.springframework.test.context.junit4.SpringRunner;
    
    
    
    @RunWith(SpringRunner.class)
    @SpringBootTest
    public class JdbcExmapleApplicationTests {
    
        @Autowired
        JdbcTemplate jdbcTemplate;
    
        @Autowired
        DataSource dataSource;
        @Test
        public void contextLoads() throws SQLException {
            //查看Spring使用源生JDBC是使用的DataSource Type
            System.out.println(dataSource.getClass());
    
            //查看DataSource建立的Connection类型
            java.sql.Connection connection = dataSource.getConnection();
            System.out.println(connection);
            List<Map<String, Object>> lockersInfo = jdbcTemplate.queryForList("select * from qrtz_locks");
            System.out.println(lockersInfo);
            connection.close();
        }
    
    }
    
  • 执行结果
    这里写图片描述


小结

  • SpringBoot版本不同,默认的dataSource类型也不同。
  • 一般而言我们不加以建议使用默认的dataSource来操作数据库,至于为什么,一句话因业务需要。

猜你喜欢

转载自blog.csdn.net/u012437781/article/details/80283162