Spring Boot与数据访问二--使用原生JDBC及源码解析

      Spring Boot与数据访问一–Spring Data介绍
      Spring Boot与数据访问二–使用原生JDBC及源码解析
      Spring Boot与数据访问三–整合Druid
      Spring Boot与数据访问四–整合MyBatis(注解版)
      Spring Boot与数据访问五–整合MyBatis(配置版)
      Spring Boot与数据访问六–整合JPA
 

一、整合基本JDBC与数据源

1、引入starter

spring-boot-starter-jdbc
创建新的项目:
在这里插入图片描述
在这里插入图片描述

  • Group:项目组织的唯一标识符,通常分为多个段,自己使用随便设置即可
    这里介绍两段的用法:第一段为域,第二段为公司名称
    域又分为org、com、cn等,其中org为非营利组织,com为商业组织,cn表示中国
    例如apache公司的tomcat项目:org.apache.tomcat
    Group是org.apache
    域是org(tomcat是非营利项目
    公司名称是apache
    Artifact是tomcat
  • Artifact:项目的唯一的标识符,就是项目的名称,注意只能全小写,不能存在大写字母
    Grounp+Artifact就相当于项目的坐标,保证了项目的唯一性
  • Name:默认同Artifact,声明了一个对于用户更为友好的项目名称,不是必须的
  • Description:项目描述
  • Package:指定main目录里java下的包名称,默认为Group+Artifact
  • Packaging:打包方式,可选项:war,jar,在pom文件中可以随意修改
  • Version:指定了项目的当前版本,SNAPSHOT意为快照,说明该项目还处于开发中,是不稳定的版本
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
2、配置application.yml或者application.properties

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3、测试

在这里插入图片描述
在这里插入图片描述

二、数据源的相关配置

数据源的相关配置都在org.springframework.boot.autoconfigure.jdbc.DataSourceProperties里面:
在这里插入图片描述

三、自动配置原理

1、参考DataSourceConfiguration,根据配置创建数据源,默认使用hikari连接池,可以使用spring.datasource.type指定自定义的数据源类型。

在这里插入图片描述

2、SpringBoot默认可以支持:
  • oracle.ucp.jdbc.PoolDataSource
  • org.apache.commons.dbcp2.BasicDataSource
  • com.zaxxer.hikari.HikariDataSource
  • org.apache.tomcat.jdbc.pool.DataSource
3、自定义数据源类型
    @Configuration(
        proxyBeanMethods = false
    )
    @ConditionalOnMissingBean({DataSource.class})
    @ConditionalOnProperty(
        name = {"spring.datasource.type"}
    )
    static class Generic {
        Generic() {
        }

        @Bean
        DataSource dataSource(DataSourceProperties properties) {
            // 使用DataSourceBuilder创建数据源,利用反射创建相应type的数据源,并且绑定相关属性
            return properties.initializeDataSourceBuilder().build();
        }
    }

注:上面这段代码在org.springframework.boot.autoconfigure.jdbc.DataSourceConfiguration的第31行
在这里插入图片描述

4、初始化数据库

在org.springframework.boot.autoconfigure.jdbc.DataSourceInitializer文件里面。
spring.datasource下有两个属性 schme、data,其中schema为表初始化语句,data为数据初始化,默认加载schema.sqldata.sql。脚本位置可以通过spring.datasource.schemaspring.datasource.data来改变,源码如下:
在这里插入图片描述
看getScripts源码,它还会加载schema-${platform}.sql文件,或者data-${platform}.sql文件,其中platform就是spring.datasource.platform的值
在这里插入图片描述
在这里插入图片描述
默认只需要将文件命名为:schema-*.sqldata-*.sql
创建schema-all.sql文件开始测试,启动程序后发现MySQL中tbl_user表并没有创建成功
在这里插入图片描述
DataSourceInitializationMode初始化模式(springboot2.0),其中有三个值,always为始终执行初始化,embedded只初始化内存数据库(默认值),如h2等,never为不执行初始化。只要两个条件符合就执行,看起来是通过配置文件获取的,所以配置文件中需要添加(1.5版本的时候还没有该配置)initialization-mode: always
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
重新启动程序再看MySQL库中该表已创建成功并有数据
在这里插入图片描述
使用自己定义的文件名称,注意:不能写成classpath: tbl_user.sql,中间不能有空格,否则识别不了。
在这里插入图片描述

5、操作数据库:自动配置了JdbcTemplate操作数据库

在这里插入图片描述
创建相应的Controller来测试一下
在这里插入图片描述
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/m0_37739193/article/details/114788821