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

本文详细介绍了如何在Spring Boot项目中配置JDBC,并使用Druid数据源替代默认的HikariCP,包括配置Druid监控、日志和安全过滤器等特性,最后展示了如何通过Controller访问数据库。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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 就到此为止

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值