springBoot 集成 JDBC Druid Mybatis 以及简单的配置

JDBC

项目的搭建

  • 一路向下

在这里插入图片描述
到这一步 可选 可不选
在这里插入图片描述
不选:请在pom.xml中添加

        <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>

进行数据库配置

不加时区会报错
application.yml

spring:
  datasource:
    username: root
    password: jhs123
    url: jdbc:mysql://localhost:3306/mybatis?serverTimezone=GMT
    driver-class-name: com.mysql.cj.jdbc.Driver
 

首先查看springboot 默认使用的数据源
在这里插入图片描述

    @Test
    void contextLoads() {
        try {
            System.out.println("目前正在使用的数据源" + dataSource.getClass());
            System.out.println("获取链接数据库" + dataSource.getConnection());
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }
    }

测试结果

目前正在使用的数据源class com.zaxxer.hikari.HikariDataSource
2020-05-29 15:43:15.707  INFO 28064 --- [           main] com.zaxxer.hikari.HikariDataSource       : HikariPool-1 - Starting...
2020-05-29 15:43:15.891  INFO 28064 --- [           main] com.zaxxer.hikari.HikariDataSource       : HikariPool-1 - Start completed.
获取链接数据库HikariProxyConnection@1081344572 wrapping com.mysql.cj.jdbc.ConnectionImpl@3ed0918d

恭喜 jdbc 搭建成功
写一个简单的Controller

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import java.util.List;
import java.util.Map;

@Controller
public class HelloController {

    @Autowired
    JdbcTemplate jdbcTemplate;

    @ResponseBody
    @GetMapping("/jhs")
    public List<Map<String, Object>> add() {
        List<Map<String, Object>> mapList = jdbcTemplate.queryForList("select * from user");
        return mapList;
    }


}

JDBC 的配置就到此结束

Druid

环境准备

  • 添加 druid jar
        <!-- https://mvnrepository.com/artifact/com.alibaba/druid -->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.1.22</version>
        </dependency>
  • 修改配置文件
spring:
  datasource:
    username: root
    password: jhs123
    url: jdbc:mysql://localhost:3306/mybatis?serverTimezone=GMT
    driver-class-name: com.mysql.cj.jdbc.Driver
#    修改数据源 默认使用 HikariDataSource
    type: com.alibaba.druid.pool.DruidDataSource
  • 在进行测试 使用同一个测试
目前正在使用的数据源class com.alibaba.druid.pool.DruidDataSource
2020-05-29 15:45:30.128  INFO 21160 --- [           main] com.alibaba.druid.pool.DruidDataSource   : {dataSource-1} inited
获取链接数据库com.alibaba.druid.proxy.jdbc.ConnectionProxyImpl@3e33d73e

此时 数据源已经切换好了

下面使用 比较有特点的功能 监控

修改一下配置文件
在application.yml中 添加
只有使用的是Druid 才可以使用

    # log4j 日志 需要导入 log4j
    # wall 安全 防止sql注入
    # stat 监控统计
    filters: log4j,stat,wall

导入log4j的jar包

        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.17</version>
        </dependency>

添加一个Druid 的配置类

import com.alibaba.druid.pool.DruidDataSource;
import com.alibaba.druid.support.http.StatViewServlet;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.web.servlet.ServletRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import javax.sql.DataSource;
import java.util.HashMap;
import java.util.Map;

@Configuration
public class DruidConfig {
    /**
     * 和 application.yml 配置文件中的 spring.datasource 配置进行绑定
     */
    @ConfigurationProperties(prefix = "spring.datasource")
    @Bean
    public DataSource druidDataSource() {
        return new DruidDataSource();
    }

    /**
     * 后台监控
     * Dtuid 已经为我们准备好了 我们只需将它为我们提供的servlet 注册的 springboot中
     *
     * @return
     */
    @Bean
    public ServletRegistrationBean statViewServlet() {
        ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean(new StatViewServlet(), "/druid/*");
        Map<String, String> initParameters = new HashMap<>();
        initParameters.put("loginUsername", "admin");//固定的KEY
        initParameters.put("loginPassword", "123456");
        initParameters.put("allow","");

        servletRegistrationBean.setInitParameters(initParameters);//初始化参数

        return servletRegistrationBean;
    }

}

可能出现的错误:

***************************
APPLICATION FAILED TO START
***************************

Description:

Failed to bind properties under 'spring.datasource' to javax.sql.DataSource:

    Property: spring.datasource.filters
    Value: stat,wall,log4j
    Origin: class path resource [application.yml]:24:14
    Reason: org.apache.log4j.Logger

Action:

Update your application's configuration

应该就是log4j的jar 包 没有导入 进去 maven的问题

效果:
http://localhost:8080/druid.html在这里插入图片描述
每一次的sql 都在检查中 具体使用 请查看 官方文档

Druid 就到此为止

Spring Boot 是一个用于快速构建 Java 应用程序的框架。它可以与多种其他框架和组件进行整合,以实现更丰富的功能。在这里,我们将讨论如何使用 Spring Boot 整合 DruidMyBatis、JTA 分布式事务以及多数据源,同时使用 AOP 注解实现动态切换。 首先,我们可以在 Spring Boot集成 Druid 数据源。Druid 是一个高性能的 JDBC 连接池,可以提供监控和统计功能。我们可以通过在 pom.xml 文件中添加相关的依赖,并在 application.properties 文件中配置数据源信息,来实现 Druid集成。 接下来,我们可以整合 MyBatis 框架,它是一种优秀的持久化解决方案。我们可以使用 MyBatis 来操作数据库,并将其与 Druid 数据源进行整合。为此,我们需要在 pom.xml 文件中添加 MyBatisMyBatis-Spring 的依赖,并配置 MyBatis 的相关配置文件。 此外,我们还可以使用 JTA(Java Transaction API)实现分布式事务。JTA 可以在分布式环境中协调多个参与者的事务操作。我们可以在 pom.xml 文件中添加 JTA 的依赖,并在 Spring Boot配置文件中配置 JTA 的相关属性,以实现分布式事务的支持。 在实现多数据源时,我们可以使用 Spring Boot 的 AbstractRoutingDataSource 来实现动态切换数据源。这个类可以根据当前线程或其他条件选择不同的数据源来进行数据操作。我们可以通过继承 AbstractRoutingDataSource 并实现 determineCurrentLookupKey() 方法来指定当前数据源的 key。然后,在配置文件中配置多个数据源,并将数据源注入到 AbstractRoutingDataSource 中,从而实现动态切换。 最后,我们可以使用 AOP(Aspect Oriented Programming)注解来实现动态切换。AOP 是一种编程范式,可以通过在代码中插入特定的切面(Aspect)来实现横切关注点的处理。我们可以在代码中使用注解来标记需要切换数据源的方法,然后使用 AOP 技术来拦截这些方法,并根据注解中指定的数据源信息来进行数据源的切换。 综上所述,通过整合 DruidMyBatis、JTA 分布式事务以及多数据源,并使用 AOP 注解实现动态切换,我们可以在 Spring Boot 中实现强大而灵活的应用程序。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值