SpringBoot源代码理解数据库 *** 作(总体第八篇)

SpringBoot源代码理解数据库 *** 作(总体第八篇),第1张

*** 作数据库

一 、关系型数据库 (一)整合Druid整理 1、数据源自动配置原理 (1)导入相关依赖
  • 导入我们的依赖

            org.springframework.boot
            spring-boot-starter-jdbc
        


导入了如下的一个数据源(数据库连接池)


      com.zaxxer
      HikariCP
      4.0.3
      compile
    

  • 我们发现并没有导入驱动包,为什么呢
    其实就是官方不知道你接下来 *** 作什么数据库。

  • 导入mysql的的驱动。


            mysql
            mysql-connector-java
        
(2)这再次复习一下我们为什么不用导入版本
  • 首先看看我们的项目结构

            mysql
            mysql-connector-java
        



  • 其实原理还是比较好理解的,我们的pom就是对我们的项目依赖版本管理,首先父项目的最高依赖里面就进行了版本仲裁,后续你就不用再配置,但是你也可以重新设置。你可以在如下的两个位置进行配置

(3)来看看我们的自动配置,配置了哪些


  • 来看看导入了jdbc的配置

    • DataSourceAutoConfiguration对数据源进行配置

      如果要进行配置,那就在配置文件就可以,这里开启了配值。
      数据库连接池的配置

      底层配置好的数据库连接池是Hikari

      并且对其进行配置
    • DataSourceTransactionManagerAutoConfiguration:对事物管理器进行配置
    • JdbcTemplateAutoConfiguration:可以对数据库进行 *** 作。可以通过spring.jdbc对配置文件进行配置。
    • JndiDataSourceAutoConfiguration:JNDI的自动配置。
    • XADataSourceAutoConfiguration:分布式事物。
  • 可以查询试一试

2、自定义整合Druid数据源
  • 我们整合其他的框架的,我们SpringBoot有两种方式:自定义和找starter,先看看自定义方式。
  • 官网:地址
(1)导入依赖

            com.alibaba
            druid
            1.1.21
        
(2)编写配置类


我们这里可以这样写死,但是不建议这样做,因为我们之前在配置文件里面配置了,通过如下方式更快。

说明我们配置生效

(3)配置监控页面
  • https://github.com/alibaba/druid/wiki/%E5%B8%B8%E8%A7%81%E9%97%AE%E9%A2%98
//之前经过源代码发现,它会先检查,如果你没有配置,它才会配置

@Configuration
public class MysqlConfig {

    @ConfigurationProperties("spring.datasource")
    @Bean
    public DataSource dataSource() {
        DruidDataSource druidDataSource = new DruidDataSource();
        return druidDataSource;
    }

    /**
     * 配置监控页
     * @return
     */
    @Bean
    public ServletRegistrationBean servletRegistrationBean() {
        StatViewServlet statViewServlet = new StatViewServlet();
        return new ServletRegistrationBean(statViewServlet,"/druid/*");
    }
}

  • 监控后要具体请求都要监控的话,那还得配置一下

(4)其他配置

都可以去配置

3、导入starter *** 作Druid数据源 (1)使用过时注解


这样导入之后我们之前写的就没用了。

(2)导入依赖


(3)看一下Druid自动配置的原理
  • 在这个位置

  • 在底层加载spring默认提供的之前就加载

    AutoConfigureBefore在我们的spring官方配置的之前,就会先加载我们阿里巴巴的,然后会替代spring自动配置的。

  • 导入这些内容:这里就通过AOP配置监控页面。


    监控springbean的配置项:spring.datasource.druid.aop-patterns

    监控页的配置项:spring.datasource.druid.stat-view-servlet.enabled

    web监控配置:spring.datasource.druid.web-stat-filter.enabled

    底层又这么一些组件,所有的自己的filter的配置。

  • 分析总结:经过上面的分析发现,我们不用再配置什么,然后直接在配置文件写相印的配置,然后在加载的时候就可以了。

(4)进行配置


之后如果详细配置就可以参考https://github.com/alibaba/druid/wiki/%E5%B8%B8%E8%A7%81%E9%97%AE%E9%A2%98与我们的DruidDataSourceAutoConfigure类进行配置即可。

(二)整合Mybatis整理 1、配置方式使用mybatis (1)导入依赖

            org.mybatis.spring.boot
            mybatis-spring-boot-starter
            2.1.4
        

(2)看看原理

老模式配置模式,使用mybatis是全局配置文件

  • sqlSessionFactory

  • sqlSession进行 *** 作

  • Mapper

  • 看看原理

    • 所有的配置项都在这里:EnableConfigurationProperties,在这MybatisProperties。
    • 配置好了:sqlsessionfactory
    • 配置sqlsessionTemplate(相当于sqlsession)
    • 导入了这个(以前有这个,我们会设置包的导入)
    • mapper:只要我们使用了@Mapper注解,就会被自动扫描进来。
(3)进行配置

https://mybatis.net.cn/getting-started.html

  • 在导入依赖的前提下配置一个全局文件


    我们不用配置具体内容,因为SpringBoot已经给我们配置了。

  • 经过上面的配置后文件映射(具体过程就两个

    • 准备好mapper接口方法

      这个接口里面的方法,就会被在service层进行调用。
    • 然后准备好SQL语句


      补充映射文件
  • 其实就是执行全局配置文件地址和映射文件地址:

mybatis.config-location=classpath:mybatis/mybatis-conf.xml
mybatis.mapper-locations=classpath:mybatis/mapper/*.xml
  • 可以设置的项

(4)使用总结
  • 导入mybatis依赖
  • 编写mapper接口
  • 编写SQL映射文件
  • 在application.yaml执行mapper配置文件地址。
2、注解方式实现mybatis (1)使用注解
  • 首先创建你的表和对应的实体类。

  • 然后就是些mapper接口方法。

    这里我们就不再使用映射文件了,而是使用纯出街的方式实现的。(同样的也是还是insert啊,update 等字段的)

  • 然后后续的就是默认的service层调用我们的mapper层。

另外我们也可以两个混着使用,当你某一个方法的SQL语句非常大的时候,那就可以使用混着使用,单独写一个映射文件。

(2)mapper注解的使用
  • 我们可以在每一个写的SQL查询接口上上@Mapper注解
  • 我们也只用@MapperScan(“指定你mapper文件地址”)在启动类上加
(三)整合Mybatis-plus

https://baomidou.com/pages/24112f/#%E7%89%B9%E6%80%A7

1、使用插件


这个可以实现XML的跳转,旁边会给你有小鸟。还有生成代码。语法提示等。

2、例子演示 (1)创建表
  • 创建表

(2)创建model



        
            org.springframework.boot
            spring-boot-starter-web
        

        
            org.springframework.boot
            spring-boot-devtools
            runtime
            true
        
        
            org.springframework.boot
            spring-boot-starter-test
            test
        

        
            mysql
            mysql-connector-java
        
        
            com.baomidou
            mybatis-plus-boot-starter
            3.4.3
        
    
  • 配置yaml
server:
  port: 8005
  
spring:
  datasource:
    url: jdbc://localhost:3306/blog
    username: root
    password: 111
    driver-class-name: com.mysql.cj.jdbc.Driver
(3)业务逻辑
  • 再次配置启动类
  • 编写Mapper接口和实体类

  • 编写select方法

    它给配置好了,我的测试报错,但是按着步骤来是没什么问题的,我一会恰饭回来再看看。
3、分析一下自动配置

同样的也是来到这里。


  • 而且它直接给你配置好了mapperlocations的路径,默认就是classpath:/mapper/**/*.xml文件,之后就建议放在这个路径。
  • 其他都给你配置好了,你顾着写你的业务逻辑即可。
二、非关系型数据库 1、 *** 作非关系型数据库Redis (1)导依赖

            org.springframework.boot
            spring-boot-starter-data-redis
        

(2)看看自动配置了哪些

  • 这个就是处理客户端的

  • 属性配置

  • 导入了这么两个


    准备好了链接工厂。

  • *** 作redis的template

    上面个是 *** 作的Object的,下面个 *** 作String的。我们只要 *** 作这个两个即可。

2、整合redis


如果没有设置密码就不用设置。localhost可以填你自己的服务器地址。

  • 启动测试

    它的底层是采用的Lettuce。当然你也可以切换为Jedis *** 作Redis。导入Jedis的依赖
  • 这里回顾我们的Filter与Interceptor
    Filter是Servlet定义的原则组件,好处,脱离了spring应用也可以正常使用。
    Interceptor是spring的接口,可以使用spring的自动装配功能。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/876293.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-13
下一篇 2022-05-13

发表评论

登录后才能评论

评论列表(0条)

保存