SpringBoot:整合jdbc、整合Druid

本文介绍了如何在SpringBoot项目中整合JDBC,并配置数据源信息,包括用户名、密码、URL和驱动类。接着展示了使用JdbcTemplate进行CRUD操作的示例代码。此外,还详细说明了如何引入Druid数据源,配置相关参数以及设置监控,包括登录认证、过滤器配置,并提供了Druid配置类的编写。最后,演示了Druid监控页面的效果。
摘要由CSDN通过智能技术生成

目录

整合jdbc

 整合Druid


整合jdbc

项目创建时,要添加JDBC API、MySQL Driver、spring web这三个依赖

在application.yml中,配置数据源的信息

spring:
  datasource:
    username: ***
    password: ***
    url: jdbc:mysql://localhost:3306/db_7?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC
    driver-class-name: com.mysql.cj.jdbc.Driver

注意:

  • SpringBoot 使用的是MySQL8.x.x版本,所以url、driver的书写方式与之前不一样
  • 我们配置好这四个基本信息后,SpringBoot 自动帮我们配置了数据源(DataSource),它还将其封装进一款jdbc轻量级框架(JdbcTemplate)
  • SpringBoot 底层默认调用的数据库连接池是HikariDataSource,特点就是速度快

控制层代码

原理:从ioc中获取JdbcTemplate,对数据库进行增删改查,将结果回显至页面

@RestController
//@RestController=@Controller + @ResponseBody
public class jdbcTemConteoller {
    @Autowired
    private JdbcTemplate jdbcTemplate;
//    增加
    @GetMapping("/user_add")
    public String insert(){
        String sql="insert into user (username,password,tel,email,balance) values ('tom','123','12345678998','123@qq.cn','34') ";
        int update = jdbcTemplate.update(sql);
        return "ok";
    }
//    删除
    @GetMapping("/user_del/{id}")
    public String delete(@PathVariable int id){
//        sql:字符串拼接的方式
        String sql="delete from user where id="+id;
        int update = jdbcTemplate.update(sql);
        return "ok";
    }
//    修改
    @GetMapping("/user_upate/{id}")
    public String update(@PathVariable int id){
//        sql:预编译的方式
        String sql="update user set username='ttt',password='123',tel='123',email='423@q.cm',balance=12 where id=?";
        jdbcTemplate.update(sql,id);
        return "ok";
    }
//    查询
@GetMapping("/user_findall")
    public  List<Map<String, Object>> findAll(){
        String sql="select * from user";
        List<Map<String, Object>> maps = jdbcTemplate.queryForList(sql);
        return maps;

    }

}

访问页面(查询所有的路径)

 整合Druid

Druid 是阿里巴巴开源平台上一个数据库连接池实现,结合了 C3P0、DBCP 等 DB 池的优点,同时加入了日志监控。

添加依赖

<!--        druid-->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.0.9</version>
        </dependency>
<!--        log4j-->
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.17</version>
        </dependency>

在application.yml中,配置Druid的信息

spring:
  datasource:
    username: ***
    password: ***
    url: jdbc:mysql://localhost:3306/db_7?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC
    driver-class-name: com.mysql.cj.jdbc.Driver
    type: com.alibaba.druid.pool.DruidDataSource
    #Spring Boot 默认是不注入这些属性值的,需要自己绑定
    #druid 数据源专有配置
    initialSize: 5
    minIdle: 5
    maxActive: 20
    maxWait: 60000
    timeBetweenEvictionRunsMillis: 60000
    minEvictableIdleTimeMillis: 300000
    validationQuery: SELECT 1 FROM DUAL
    testWhileIdle: true
    testOnBorrow: false
    testOnReturn: false
    poolPreparedStatements: true

    #配置监控统计拦截的filters,stat:监控统计、log4j:日志记录、wall:防御sql注入
    #如果允许时报错  java.lang.ClassNotFoundException: org.apache.log4j.Priority
    #则导入 log4j 依赖即可,Maven 地址:https://mvnrepository.com/artifact/log4j/log4j
    filters: stat,wall,log4j
    maxPoolPreparedStatementPerConnectionSize: 20
    useGlobalDataSourceStat: true
    connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=500



编写配置类DruidConfig:SpringBoot的扩展配置 全部使用配置类来实现

@Configuration
public class DruidConfig {
    /**
     * 通过ConfigurationProperties注解 获取到yml中的数据
     * 在将数据源的数据注入dataSource()中
     * 并且将返回值放入ioc容器中
     * 
     */
    @ConfigurationProperties(prefix = "spring.datasource")
    @Bean
    public DataSource dataSource(){
        return new DruidDataSource();
    }

//    配置后台监控 
    @Bean
    public ServletRegistrationBean<StatViewServlet> servletRegistrationBean(){
        //配置的访问路径是/druid/*
        ServletRegistrationBean<StatViewServlet> bean = new ServletRegistrationBean<>(new StatViewServlet(), "/druid/*");
        HashMap<String, String> hashMap = new HashMap<>();
        hashMap.put("loginUsername","user");
        hashMap.put("loginPassword","123");
        hashMap.put("allow","");//允许所有访问
        bean.setInitParameters(hashMap);
        return bean;
    }
//    过滤器
    @Bean
    public FilterRegistrationBean webStatFilter(){
        FilterRegistrationBean bean = new FilterRegistrationBean();
        bean.setFilter(new WebStatFilter());//添加过滤器 :springweb自带的过滤器
        HashMap<String, String> hashMap = new HashMap<>();
        //这些路径不进行统计
        hashMap.put("exclusions","*.js,*.css,/druid/*");
        bean.setInitParameters(hashMap);
        return bean;

    }
}

注意:

  • hashMap中的key值均是不能变化的!
  • 不编写过滤器,不影响后台监控

进行访问

 登录成功后,进入sql监控页面,再运行几次之前增删改查的路径,就会有如下效果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值