zoukankan      html  css  js  c++  java
  • 21、springboot——JDBC+自动配置原理

     1、创建项目(通过idea)

    这里的mysql就是帮助我们导入mysql驱动的。

    然后通过项目下的pom.xml文件,可以发现我们导入了下面这些依赖。

    我们在使用最基本的jdbc的时候,我们只要引入jdbc和mhysql驱动就可以了。

    2、与数据库连接

      新建一个数据库

      编写配置文件

    然后在resources下的新建一个application.yml文件进行编写相关的配置文件。

      测试

      测试结果:可以看出 Spring Boot 2.x 默认使用 com.zaxxer.hikari.HikariDataSource 数据源,而以前版本,比如 Spring Boot 1.5 默认使用 org.apache.tomcat.jdbc.pool.DataSource 作为数据源;至于原因也很简单,听闻HikariDataSource 是当前速度最快的数据源,相比于传统的 C3P0 、DBCP、Tomcat jdbc 等连接池更加牛皮,因此springboot把它作为默认的数据源了。

    3、原理解析

    回到配置文件,我们按住ctrl键点username进去;

    然后进入DataSourceProperties.java文件。可以发现数据源的相关配置都是在这里配置的。

    那么为什么会是这样的效果?包括我们自动装配到数据源,而且springboot默认使用hikari作为数据源的。

    那么我们可以探究一下有关数据源的自动配置原理。

    我们打开自动配置包

    找到jdbc部分;我们可以发现jdbc下都是一些跟数据源有关的配置。

      1、DataSourceConfiguration

    这里的@Bean表示给容器中加组件。都是加一些DataSource。

    DataSourceConfiguration这个类主要是给容器中加数据源的但是加哪些数据源,就根据各种判断,根据有matchIfMissing=true这个配置则是默认数据源

    如果需要使用其他数据源根据条件进行配置即可。

      2、DataSourceAutoConfiguration等源码文件可以自行查看

    二、通过程序创建表

      通过程序建表首先需要修改一下配置文件

    sql文件如下路径

    我们在跑程序建表语句的时候,我们首先要得到这个建表的sql文件

      通过源码查看如何获取建表文件

    而它获取呢,你可以指定文件的位置,它如果能够获取得到,它就OK了。如果不行就从类路径下找fallback

    而这个fallback呢,就是我们之前传的这个schema

    也就是说呢,它来找下面的platform.sql或者.sql , 而这个platform默认就是all

    所以要运行这个schema文件就要改名,改成schema-all.sql 或者schema.sql

    这个名字的sql文件是默认加载的。

    运行程序,成功建表。

    当然,如果不想改sql文件名,就用department.sql进行建表也可以。但是我们要修改配置文件。

     注意一点:****建表成功后需要把原来的sql 文件删除或者修改为程序执行不到的文件名;否则再次运行则原来的表会删除然后新建

    三、操作数据库

    然后如果在有数据源的情况下,它还给我们容器中放一个JdbcTemplate 以及NameParameterJdbcTemplate(具名参数JdbcTemplate),方便我们操作数据库。

        写一个HelloController,进行数据查询。这里要注意的是,如果那个scema.sql不删除,那么我们重新启动这个程序的时候就会再运行一次schema.sql文件,原来中的数据就会消失。所以,当我们不用的时候就要删除schema.sql文件。

    我们在数据库中插入数据。

    成功返回JSON数据

  • 相关阅读:
    Stream 和 byte[] 之间的转换
    C# Process类_进程_应用程序域与上下文之间的关系
    C# Process类_进程管理器Demo
    C# attribute_特性
    SqlDataAdapter类
    SqlDataReader类
    SqlCommand类
    SqlConnection类
    DataTable类
    C# 语法技巧_三目运算_switch_case
  • 原文地址:https://www.cnblogs.com/lyh233/p/12543724.html
Copyright © 2011-2022 走看看