springBoot整合Druid

简介:

Druid是一个JDBC组件,它包括三部分: DruidDriver 代理Driver,能够提供基于Filter-Chain模式的插件体系。 DruidDataSource 高效可管理的数据库连接池。

第一步:导入依赖

<dependencies>        <dependency>            <groupId>org.springframework.boot</groupId>            <artifactId>spring-boot-starter-web</artifactId>        </dependency>        <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>        <dependency>            <groupId>org.springframework.boot</groupId>            <artifactId>spring-boot-starter-test</artifactId>            <scope>test</scope>        </dependency>        <!-- https://mvnrepository.com/artifact/com.alibaba/druid -->        <dependency>            <groupId>com.alibaba</groupId>            <artifactId>druid</artifactId>            <version>1.2.4</version>        </dependency>        <dependency>            <groupId>log4j</groupId>            <artifactId>log4j</artifactId>            <version>1.2.17</version>        </dependency>    </dependencies>

第二步:配置application.yml配置文件

server:  port: 8081spring:  datasource:    password: 123456    url: jdbc:mysql://localhost:3306/jsptest?useSSL=false&serverTimezone=UTC    driver-class-name: com.mysql.cj.jdbc.Driver    username: root    type: com.alibaba.druid.pool.DruidDataSource    #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.Properity    #则导入log4j 依赖就行    filters: stat,wall,log4j    maxPoolPreparedStatementPerConnectionSize: 20    useGlobalDataSourceStat: true    connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=500

检查Druid数据源是否配置成功:

@SpringBootTestclass SpringbootData0302ApplicationTests {    @Autowired    DataSource dataSource;    @Test    void contextLoads() {        //查看默认数据源  class com.zaxxer.hikari.HikariDataSource        System.out.println(dataSource.getClass());        //获取数据库连接        try {            Connection connection = dataSource.getConnection();            System.out.println(connection);            //关闭            connection.close();        } catch (SQLException e) {            e.printStackTrace();        }    }}

第四步:设置Druid的初始化配置及参数

package com.sun.config;import com.alibaba.druid.pool.DruidDataSource;import com.alibaba.druid.support.http.StatViewServlet;import com.alibaba.druid.support.http.WebStatFilter;import org.springframework.boot.context.properties.ConfigurationProperties;import org.springframework.boot.web.servlet.FilterRegistrationBean;import org.springframework.boot.web.servlet.ServletRegistrationBean;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import javax.servlet.Filter;import javax.servlet.FilterRegistration;import javax.servlet.ServletRegistration;import javax.sql.DataSource;import java.util.HashMap;import java.util.Map;@Configurationpublic class DruidConfig {    @ConfigurationProperties(prefix="spring.datasource")    @Bean    public DataSource druidDataSource(){        return new DruidDataSource();    }    //后台监控    @Bean    public ServletRegistrationBean statViewServlet(){        ServletRegistrationBean<StatViewServlet> bean = new ServletRegistrationBean<>(new StatViewServlet(), "/druid/*");        //后台登录设置账号密码        HashMap<String, String> initParameters = new HashMap<>();        initParameters.put("loginUsername","admin");        initParameters.put("loginPassword","123456");        //允許谁能访问  initParameters.put("allow","");        bean.setInitParameters(initParameters);//初始化参数        return bean;    }  //filter  public FilterRegistrationBean webStatFilter(){      FilterRegistrationBean bean = new FilterRegistrationBean();      bean.setFilter(new WebStatFilter());      //可以过滤那些请求?      HashMap<String, String> initParameters = new HashMap<>();        //这些东西不进行统计      initParameters.put("exclusions","*.js,*.css,/druid/*");              bean.setInitParameters(initParameters);              return bean;  }}

第五步:写出增删查改语句进行测试:

package com.sun.controller;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.jdbc.core.JdbcTemplate;import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.PathVariable;import org.springframework.web.bind.annotation.RestController;import java.util.List;import java.util.Map;@RestControllerpublic class JDBCController {    @Autowired    JdbcTemplate jdbcTemplate;    //查询数据库所有信息    //没有实体类,数据库中的东西怎么获取? Map    @GetMapping("/userList")    public List<Map<String,Object>> userList(){        String sql="select * from user";        List<Map<String, Object>> list_maps = jdbcTemplate.queryForList(sql);        return  list_maps;    }    //添加用户信息    @GetMapping("/addUser")    public String addUser(){        String sql="insert into jsptest.user (id,username,password) values (6,'王五','123456')";        jdbcTemplate.update(sql);        return "add-ok";    }    //修改    @GetMapping("/updateUser/{id}")    public String updateUser(@PathVariable("id") int id){        String sql="update jsptest.user set username=?,password=? where id=" id;        Object[] objects = new Object[2];        objects[0]="小明2";        objects[1]="zzzzz";        jdbcTemplate.update(sql,objects);        return "update-ok";    }    //删除    @GetMapping("/deleteUser/{id}")    public String deleteUser(@PathVariable("id") int id){        String sql="delete from jsptest.user where id=?";        jdbcTemplate.update(sql,id);        return "deleteUser-ok";    }}

访问路径完成增删改操作在Druid数据源中查看相应操作

来源:https://www.icode9.com/content-4-852751.html

(0)

相关推荐

  • Spring Boot整合Quartz持久化到数据库

    获取Sql文件 http://www.quartz-scheduler.org/downloads/ 解压获取的sql文件,并在数据库中执行 代码编写 引入依赖 <dependencies> ...

  • 给小白演示 分库分表案例

    大家好,我是老田,受群里小伙伴之邀,搞一个分库分表案例,这样让很多没用过分库分表的心里也有个底,不然永远看到的都是网上的各种概念和解决方案性的文章. 说明:由于是给小白看的,所以大神勿喷,建议出门左转 ...

  • Java编程第43讲——实现前端后一体的Web服务器

    原创编程实践2020-08-31 01:24:42 随着Web前端技术的迅猛发展,现在的Web开发已经明显分为两大阵营:Web前端和Web后端,接着UI设计又从Web前端分离出去,成为专门的团队.当我 ...

  • Springboot 整合阿里数据库连接池 druid

    Spring boot 整合 druid druid的maven依赖 <!-- 阿里数据库连接池fhadmin.cn --> <dependency> <groupId& ...

  • jackson学习之九:springboot整合(配置文件)

    欢迎访问我的GitHub 这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos 系列文章汇总 jackson学习之一:基本信息 jac ...

  • 手把手教你SpringBoot整合MybatisPlus 代码生成器

    一.在pom.xml中添加所需依赖 <!-- MyBatis-Plus代码生成器--><dependency> <groupId>com.baomidou</ ...

  • quartz与springboot整合无法暂停job问题

    很多项目中都会用到定时任务的场景.起初项目中只是简单的使用了spring提供的@Scheduled注解.随着定时任务越来越多,我们需要对定时任务进行可视化管理,于是就单独建立了一个工程,用quartz ...

  • SpringBoot整合RabbitMQ 手动应答 简单demo

    版本说明 JDK 1.8 RabbitMQ 3.7.15 Erlang 22.0 SpringBoot 2.3.3.RELEASE // Update 2021年1月19日16:50:16 CentO ...

  • SpringBoot整合Shiro权限框架实战

    什么是ACL和RBAC ACL Access Control list:访问控制列表 优点:简单易用,开发便捷 缺点:用户和权限直接挂钩,导致在授予时的复杂性,比较分散,不便于管理 例子:常见的文件系 ...

  • SpringBoot整合阿里短信服务

    导读 由于最近手头上需要做个Message Gateway,涉及到:邮件(点我直达).短信.公众号(点我直达)等推送功能,网上学习下,整理下来以备以后使用. 步骤 点我直达 登录短信服务控制台 点我直 ...

  • Springboot整合百度开源分布式ID生成器UIDGenerator

    环境:sprinboot2.3.12.RELEASE uid-generator1.0.0 简介 UidGenerator是Java实现的, 基于Snowflake算法的唯一ID生成器.UidGene ...

  • SpringBoot整合Durid

    上一篇我们整合了MySQL和JDBCTemplate,并在结尾完成了双数据源的配置和插入动作.当我们将数据插入成功后,查看控制台就会发现,我们已经使用了默认的数据库连接池HikariDataSourc ...