精华内容
下载资源
问答
  • SpringBoot配置druid连接池连接mysql数据库 前言 druid是阿里巴巴开源的一款数据库连接池,性能很好,也有可视化的查询语句执行查看面板。 在pom.xml文件中添加druid的依赖,添加log4j的依赖,不加的话启动会报错,...

    SpringBoot配置druid连接池连接mysql数据库


    前言

    druid是阿里巴巴开源的一款数据库连接池,性能很好,也有可视化的查询语句执行查看面板。

    在pom.xml文件中添加druid的依赖,添加log4j的依赖,不加的话启动会报错,druid有用到它。


    没有废话直接开始

    1. pom.xml文件中添加druid连接池依赖,如下所示:
    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
        <groupId>com.jmccms</groupId>
        <artifactId>Jmccms</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <name>Jmccms</name>
        <url>https://repo.spring.io/milestone</url>
        <description>CYJ:ChenYongJia 服务提供者Jmccms</description>
    
        <parent>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <version>2.1.5.RELEASE</version>
            <relativePath/> <!-- lookup parent from repository -->
        </parent>
    
        <!-- 项目属性配置信息 -->
        <properties>
            <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
            <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
            <java.version>1.8</java.version>
            <mysql-connector>5.1.39</mysql-connector>
            <junit-version>4.12</junit-version>
            <druid>1.1.20</druid>
            <log4j>1.2.17</log4j>
        </properties>
    
        <dependencies>
    
            <!-- 引入web依赖 -->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
            </dependency>
    
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-actuator</artifactId>
            </dependency>
    
            <!-- 引入AOP -->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-aop</artifactId>
            </dependency>
    
            <!-- Spring Boot JPA 依赖 -->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-data-jpa</artifactId>
            </dependency>
    
            <!-- 引入test测试依赖 -->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-test</artifactId>
                <scope>test</scope>
            </dependency>
    
            <!-- Junit 单元测试 依赖 -->
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
            </dependency>
    
            <!-- 引入redis数据库依赖 -->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-data-redis</artifactId>
            </dependency>
    
            <!-- Druid依赖 -->
    		<dependency>
    			<groupId>com.alibaba</groupId>
    			<artifactId>druid</artifactId>
    			<version>${druid}</version>
    		</dependency>
    		
    		<!-- log4j 不加此依赖Druid的filters拦截会报错 在properties配置文件中filters中有体现 -->
    		<dependency>
    			<groupId>log4j</groupId>
    			<artifactId>log4j</artifactId>
    			<version>${log4j}</version>
    		</dependency>
    
            <!-- 引入mysql链接依赖 -->
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <version>${mysql-connector}</version>
            </dependency>
    
            <!-- 引入 Lombok 依赖 -->
            <dependency>
                <groupId>org.projectlombok</groupId>
                <artifactId>lombok</artifactId>
                <optional>true</optional>
            </dependency>
    
            <!-- 使用httpclient获取天气信息 -->
            <dependency>
                <groupId>org.apache.httpcomponents</groupId>
                <artifactId>httpclient</artifactId>
                <version>4.5.8</version>
            </dependency>
        
        </dependencies>
            
        <build>
            <plugins>
                <!-- SpringBoot 项目打jar包的Maven插件 -->
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                </plugin>
            </plugins>
            <!-- SpringBoot项目打包jar名称 -->
            <finalName>jmccms</finalName>
        </build>
    
    </project>
    
    1. resource包下创建application.yml,加入以下内容:
    server:
      #项目端口号
      port: 8066
      servlet:
        context-path: /Jmccms # 项目访问路径
      tomcat:# 优化tomcat
        max-connections: 200
        max-http-post-size: 0
        max-threads: 300
        min-spare-threads: 0
        uri-encoding: UTF-8
    
    spring:
      datasource:
        type: com.alibaba.druid.pool.DruidDataSource
        driver-class-name: com.mysql.jdbc.Driver
        url: jdbc:mysql://localhost:3306/jmccms?useUnicode=true&characterEncoding=UTF-8&useSSL=false
        username: root
        password: root
      #集中解决各种编码问题
      banner:
        charset: UTF-8
      http:
        encoding:
          charset: UTF-8
          enabled: true
          force: true
      messages:
        encoding: UTF-8
      #     spring mvc 视图解析器
      mvc:
        view:
          prefix: /
          suffix: .html
      # 时间格式化
      jackson:
        date-format: yyyy-MM-dd HH:mm:ss
        # 时区设置
        time-zone: GMT+8
    

    大家自行测试,我的数据库密码是root,数据库名是jmccms


    最后

    • 更多参考精彩博文请看这里:《陈永佳的博客》

    • 喜欢博主的小伙伴可以加个关注、点个赞哦,持续更新嘿嘿!

    展开全文
  • Spring Boot 集成教程 Spring Boot 介绍 Spring Boot 开发环境搭建(Eclipse) Spring Boot Hello World (restful接口...spring boot配置druid连接池连接mysql spring boot集成mybatis(1) spring boot集成mybatis(2...

    Spring Boot 集成教程


    概述

    spring boot现在的默认连接池是Hikari,号称是性能最好的连接池,不过国内使用较多的是阿里开源的druid连接池,在阿里的诸多项目中经过实践验证,本文介绍怎样在spring boot中集成druid

    准备数据

    我们会使用与教程spring boot 连接 mysql同样的数据,如无数据请参照该教程准备数据,该教程详细介绍了通过mysql图形客户端workbench生成数据的过程。如果倾向使用mysql命令行客户端,下面是创建数据库和插入数据的sql语句。

    sql语句

    mysql命令行客户端连接数据库:

    mysql -h localhost -u root -p

    创建数据库

    CREATE DATABASE qikegu_demo CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

    创建表的sql语句:

    CREATE TABLE `qikegu_demo`.`user` (
      `id` BIGINT(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
      `nickname` VARCHAR(50) NULL COMMENT '昵称',
      `mobile` VARCHAR(20) NULL COMMENT '手机号',
      `password` CHAR(60) NULL COMMENT '密码hash值',
      `role` VARCHAR(100) NULL DEFAULT 'user' COMMENT '角色,角色名以逗号分隔',
      PRIMARY KEY (`id`),
      UNIQUE INDEX `mobile_UNIQUE` (`mobile` ASC))
    COMMENT = '用户表';
    

    插入数据的sql语句:

    INSERT INTO `qikegu_demo`.`user` (`nickname`, `mobile`, `password`) VALUES ('abc1', '13512345678', '123');
    INSERT INTO `qikegu_demo`.`user` (`nickname`, `mobile`, `password`) VALUES ('abc2', '13512345677', '123');
    

    创建项目

    创建 spring boot项目

    打开Eclipse,创建spring boot的spring starter project项目,在配置依赖时,勾选web, jdbc, mysql,如不清楚怎样创建spring boot项目,参照教程: spring boot hello world (restful接口)例子

    image

    添加druid依赖

    在pom.xml文件中,添加druid依赖

    <dependency>
       <groupId>com.alibaba</groupId>
       <artifactId>druid-spring-boot-starter</artifactId>
       <version>1.1.10</version>
    </dependency>

    完整的pom.xml文件内容如下:

    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
        <parent>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <version>2.1.1.RELEASE</version>
            <relativePath/> <!-- lookup parent from repository -->
        </parent>
        <groupId>com.qikegu</groupId>
        <artifactId>druid-demo</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <name>druid-demo</name>
        <description>Demo project for Spring Boot</description>
    
        <properties>
            <java.version>1.8</java.version>
        </properties>
    
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-jdbc</artifactId>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</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>
            
            <dependency>
               <groupId>com.alibaba</groupId>
               <artifactId>druid-spring-boot-starter</artifactId>
               <version>1.1.10</version>
            </dependency>
        </dependencies>
    
        <build>
            <plugins>
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                </plugin>
            </plugins>
        </build>
    
    </project>
    

    配置数据库

    application.properties配置

    打开文件:application.properties,该文件在 src -> main -> resources 目录,配置数据库连接:

    # 服务器端口
    server.port=8096 
    
    # 数据库设置
    spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
    spring.datasource.url=jdbc:mysql://localhost:3306/qikegu_demo?serverTimezone=UTC&useUnicode=true&characterEncoding=utf8
    spring.datasource.username=root
    spring.datasource.password=你的数据库密码
    
    # druid配置
    spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
    
    # druid参数调优(可选)
    # 初始化大小,最小,最大
    spring.datasource.initialSize=5
    spring.datasource.minIdle=5
    spring.datasource.maxActive=20
    # 配置获取连接等待超时的时间
    spring.datasource.maxWait=60000
    # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
    spring.datasource.timeBetweenEvictionRunsMillis=60000
    # 配置一个连接在池中最小生存的时间,单位是毫秒
    spring.datasource.minEvictableIdleTimeMillis=300000
    # 测试连接
    spring.datasource.testWhileIdle=true
    spring.datasource.testOnBorrow=false
    spring.datasource.testOnReturn=false
    # 打开PSCache,并且指定每个连接上PSCache的大小
    spring.datasource.poolPreparedStatements=true
    spring.datasource.maxPoolPreparedStatementPerConnectionSize=20
    # 配置监控统计拦截的filters
    spring.datasource.filters=stat
    # asyncInit是1.1.4中新增加的配置,如果有initialSize数量较多时,打开会加快应用启动时间
    spring.datasource.asyncInit=true
    

    解释请看代码注释。druid必须的配置其实很少,只需配置一行,表明不使用默认的Hikari,而使用druid。

    # druid配置
    spring.datasource.type=com.alibaba.druid.pool.DruidDataSource

    参数调优部分是可选的,这里列出的参数都是druid官网推荐的典型配置。另外还有监控配置,一般使用不用去管它。

    DruidConfig.java配置

    由于现在Spring Boot不支持druid配置,参数调优部分的配置不会直接生效,需要配置datasource bean,从application.properties中读取值来装配datasource bean,新增DruidConfig.java配置文件:

    image

    DruidConfig.java代码如下,通过@value注解读取配置文件中的值

    package com.qikegu.demo.config;
    
    import java.sql.SQLException;
    
    import javax.sql.DataSource;
    
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    import org.springframework.beans.factory.annotation.Value;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.context.annotation.Primary;
    
    import com.alibaba.druid.pool.DruidDataSource;
    
    @Configuration
    public class DruidConfig {
        private Logger logger = LoggerFactory.getLogger(DruidConfig.class);
        
        @Value("${spring.datasource.url}")
        private String dbUrl;
        
        @Value("${spring.datasource.username}")
        private String username;
        
        @Value("${spring.datasource.password}")
        private String password;
        
        @Value("${spring.datasource.driver-class-name}")
        private String driverClassName;
        
        @Value("${spring.datasource.initial-size}")
        private int initialSize;
        
        @Value("${spring.datasource.min-idle}")
        private int minIdle;
        
        @Value("${spring.datasource.max-active}")
        private int maxActive;
        
        @Value("${spring.datasource.max-wait}")
        private int maxWait;
        
        @Value("${spring.datasource.time-between-eviction-runs-millis}")
        private int timeBetweenEvictionRunsMillis;
        
        @Value("${spring.datasource.min-evictable-idle-time-millis}")
        private int minEvictableIdleTimeMillis;
        
    //    @Value("${spring.datasource.validation-query}")
    //    private String validationQuery;
        
        @Value("${spring.datasource.test-while-idle}")
        private boolean testWhileIdle;
        
        @Value("${spring.datasource.test-on-borrow}")
        private boolean testOnBorrow;
        
        @Value("${spring.datasource.test-on-return}")
        private boolean testOnReturn;
        
        @Value("${spring.datasource.pool-prepared-statements}")
        private boolean poolPreparedStatements;
        
        @Value("${spring.datasource.max-pool-prepared-statement-per-connection-size}")
        private int maxPoolPreparedStatementPerConnectionSize;
        
        @Value("${spring.datasource.filters}")
        private String filters;
        
    //    @Value("${spring.datasource.connection-properties}")
    //    private String connectionProperties;
        
        @Bean     //声明其为Bean实例
        @Primary  //在同样的DataSource中,首先使用被标注的DataSource
        public DataSource dataSource(){
            DruidDataSource datasource = new DruidDataSource();
            
            datasource.setUrl(this.dbUrl);
            datasource.setUsername(username);
            datasource.setPassword(password);
            datasource.setDriverClassName(driverClassName);
            
            //configuration
            datasource.setInitialSize(initialSize);
            datasource.setMinIdle(minIdle);
            datasource.setMaxActive(maxActive);
            datasource.setMaxWait(maxWait);
            datasource.setTimeBetweenEvictionRunsMillis(timeBetweenEvictionRunsMillis);
            datasource.setMinEvictableIdleTimeMillis(minEvictableIdleTimeMillis);
    //      datasource.setValidationQuery(validationQuery);
            datasource.setTestWhileIdle(testWhileIdle);
            datasource.setTestOnBorrow(testOnBorrow);
            datasource.setTestOnReturn(testOnReturn);
            datasource.setPoolPreparedStatements(poolPreparedStatements);
            datasource.setMaxPoolPreparedStatementPerConnectionSize(maxPoolPreparedStatementPerConnectionSize);
            try {
                datasource.setFilters(filters);
            } catch (SQLException e) {
                logger.error("druid configuration initialization filter", e);
            }
    //      datasource.setConnectionProperties(connectionProperties);
            
            return datasource;
        }
    }
    

    访问数据库

    添加代码验证数据库是否正常连接,添加文件:HelloController.java

    image

    HelloController.java的代码

    
    package com.qikegu.demo;
    
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.jdbc.core.JdbcTemplate;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RequestMethod;
    import org.springframework.web.bind.annotation.RestController;
    
    @RestController
    public class HelloController {
        
        @Autowired
        JdbcTemplate jdbcTemplate;
        
        @RequestMapping(value="/hello", method=RequestMethod.GET)
        public String index() {
            
            String sql = "SELECT mobile FROM user WHERE id = ?";
            
            // 通过jdbcTemplate查询数据库
            String mobile = (String)jdbcTemplate.queryForObject(
                    sql, new Object[] { 1 }, String.class);
            
            return "Hello " + mobile;
        }
    }
    

    我们使用spring的JdbcTemplate(这正是我们在前面引入spring jdbc依赖的原因),比使用原始的jdbc接口方便。

    运行

    项目的右键菜单,选择:run as -> spring boot app 运行程序(不清楚怎么运行可参考: spring boot hello world (restful接口)例子),使用浏览器访问,输出从数据库中读取的用户手机号

    image

    使用druid的监控功能

    druid的监控功能,可以通过网址:http://localhost:8096/druid/index.html 查看。
    查看DataSource页面,可以看到我们的配置确实生效了:

    image

    总结

    本文介绍了怎样在spring boot项目中集成druid连接池,使用JdbcTemplate访问数据库,验证数据库连接成功。

    完整代码

    转载于:https://www.cnblogs.com/jinbuqi/p/11008879.html

    展开全文
  • druid是阿里的一款数据库连接池,可以在复杂情况下进行数据交互和管理,在功能和性能方面都有不错的表现。 二、使用步骤 1.引入库 代码如下: import com.alibaba.druid.pool.DruidDataSource; import ...
      
    


    前言

    无Spring框架使用MySQL8.0以上的版本和JDK9


    一、druid是什么?

    druid是阿里的一款数据库连接池,可以在复杂情况下进行数据交互和管理,在功能和性能方面都有不错的表现。

    二、使用步骤

    1.引入库

    代码如下:

    import com.alibaba.druid.pool.DruidDataSource;
    import com.alibaba.druid.pool.DruidDataSourceFactory;
    import java.io.InputStream;
    import java.sql.Connection;
    import java.sql.SQLException;
    import java.util.Properties;
    

    2.导入配置文件

    代码如下:

    driverClassName=com.mysql.cj.jdbc.Driver
    url=jdbc:mysql://127.0.0.1/opencv?user=root&password=123456;
    username=root
    password=123456
    filters=stat
    initialSize=2
    maxActive=300
    maxWait=60000
    timeBetweenEvictionRunsMillis=60000
    minEvictableIdleTimeMillis=300000
    validationQuery=SELECT 1
    testWhileIdle=true
    testOnBorrow=false
    testOnReturn=false
    poolPreparedStatements=false
    maxPoolPreparedStatementPerConnectionSize=200
    

    url改为自己的数据库。


    3编写JDBCUtils

    代码如下:

    public class JDBCUtils {
        public static DruidDataSource dataSource;
        static {
    
            try {
                //读取配置文件内容
                Properties properties=new Properties();
                InputStream inputStream=JDBCUtils.class.getClassLoader().getResourceAsStream("druid.properties");
                //加载配置文件
                properties.load(inputStream);
                dataSource= (DruidDataSource) DruidDataSourceFactory.createDataSource(properties);
    
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    
    
    //    null失败,有值成功!
        public static Connection getConnection(){
            Connection conn=null;
            try {
                conn=dataSource.getConnection();
            } catch (Exception throwables) {
                throwables.printStackTrace();
            }
            return conn;
        }
    
    //关闭连接
        public static void Close(Connection conn){
            if(conn!=null){
                try {
                    conn.close();
                } catch (SQLException throwables) {
                    throwables.printStackTrace();
                }
            }
    
        }
    
    }
    

    # 总结 如果出现init datasource error应该是数据库配置文件没有更改造成的.
    展开全文
  • Spring Boot 集成教程 Spring Boot 介绍 Spring Boot 开发环境搭建(Eclipse) Spring Boot Hello World ... spring boot配置druid连接池连接mysql spring boot集成mybatis(1) spring boot集成mybatis(2...

    Spring Boot 集成教程

    相关推荐

    spring boot配置druid连接池连接mysql


    概述

    spring boot现在的默认连接池是Hikari,号称是性能最好的连接池,不过国内使用较多的是阿里开源的druid连接池,在阿里的诸多项目中经过实践验证,本文介绍怎样在spring boot中集成druid

    准备数据

    我们会使用与教程spring boot 连接 mysql同样的数据,如无数据请参照该教程准备数据,该教程详细介绍了通过mysql图形客户端workbench生成数据的过程。如果倾向使用mysql命令行客户端,下面是创建数据库和插入数据的sql语句。

    sql语句

    mysql命令行客户端连接数据库:

    mysql -h localhost -u root -p
    

    复制

    创建数据库

    CREATE DATABASE qikegu_demo CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
    

    复制

    创建表的sql语句:

    CREATE TABLE `qikegu_demo`.`user` (
      `id` BIGINT(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
      `nickname` VARCHAR(50) NULL COMMENT '昵称',
      `mobile` VARCHAR(20) NULL COMMENT '手机号',
      `password` CHAR(60) NULL COMMENT '密码hash值',
      `role` VARCHAR(100) NULL DEFAULT 'user' COMMENT '角色,角色名以逗号分隔',
      PRIMARY KEY (`id`),
      UNIQUE INDEX `mobile_UNIQUE` (`mobile` ASC))
    COMMENT = '用户表';
    
    

    复制

    插入数据的sql语句:

    INSERT INTO `qikegu_demo`.`user` (`nickname`, `mobile`, `password`) VALUES ('abc1', '13512345678', '123');
    INSERT INTO `qikegu_demo`.`user` (`nickname`, `mobile`, `password`) VALUES ('abc2', '13512345677', '123');
    
    

    复制

    创建项目

    创建 spring boot项目

    打开Eclipse,创建spring boot的spring starter project项目,在配置依赖时,勾选web, jdbc, mysql,如不清楚怎样创建spring boot项目,参照教程: spring boot hello world (restful接口)例子

    image

    添加druid依赖

    在pom.xml文件中,添加druid依赖

    <dependency>
       <groupId>com.alibaba</groupId>
       <artifactId>druid-spring-boot-starter</artifactId>
       <version>1.1.10</version>
    </dependency>
    

    复制

    完整的pom.xml文件内容如下:

    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
        <parent>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <version>2.1.1.RELEASE</version>
            <relativePath/> <!-- lookup parent from repository -->
        </parent>
        <groupId>com.qikegu</groupId>
        <artifactId>druid-demo</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <name>druid-demo</name>
        <description>Demo project for Spring Boot</description>
    
        <properties>
            <java.version>1.8</java.version>
        </properties>
    
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-jdbc</artifactId>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</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>
    
            <dependency>
               <groupId>com.alibaba</groupId>
               <artifactId>druid-spring-boot-starter</artifactId>
               <version>1.1.10</version>
            </dependency>
        </dependencies>
    
        <build>
            <plugins>
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                </plugin>
            </plugins>
        </build>
    
    </project>
    
    

    复制

    配置数据库

    application.properties配置

    打开文件:application.properties,该文件在 src -> main -> resources 目录,配置数据库连接:

    # 服务器端口
    server.port=8096 
    
    # 数据库设置
    spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
    spring.datasource.url=jdbc:mysql://localhost:3306/qikegu_demo?serverTimezone=UTC&useUnicode=true&characterEncoding=utf8
    spring.datasource.username=root
    spring.datasource.password=你的数据库密码
    
    # druid配置
    spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
    
    # druid参数调优(可选)
    # 初始化大小,最小,最大
    spring.datasource.initialSize=5
    spring.datasource.minIdle=5
    spring.datasource.maxActive=20
    # 配置获取连接等待超时的时间
    spring.datasource.maxWait=60000
    # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
    spring.datasource.timeBetweenEvictionRunsMillis=60000
    # 配置一个连接在池中最小生存的时间,单位是毫秒
    spring.datasource.minEvictableIdleTimeMillis=300000
    # 测试连接
    spring.datasource.testWhileIdle=true
    spring.datasource.testOnBorrow=false
    spring.datasource.testOnReturn=false
    # 打开PSCache,并且指定每个连接上PSCache的大小
    spring.datasource.poolPreparedStatements=true
    spring.datasource.maxPoolPreparedStatementPerConnectionSize=20
    # 配置监控统计拦截的filters
    spring.datasource.filters=stat
    # asyncInit是1.1.4中新增加的配置,如果有initialSize数量较多时,打开会加快应用启动时间
    spring.datasource.asyncInit=true
    
    

    复制

    解释请看代码注释。druid必须的配置其实很少,只需配置一行,表明不使用默认的Hikari,而使用druid。

    # druid配置
    spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
    

    复制

    参数调优部分是可选的,这里列出的参数都是druid官网推荐的典型配置。另外还有监控配置,一般使用不用去管它。

    DruidConfig.java配置

    由于现在Spring Boot不支持druid配置,参数调优部分的配置不会直接生效,需要配置datasource bean,从application.properties中读取值来装配datasource bean,新增DruidConfig.java配置文件:

    image

    DruidConfig.java代码如下,通过@value注解读取配置文件中的值

    package com.qikegu.demo.config;
    
    import java.sql.SQLException;
    
    import javax.sql.DataSource;
    
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    import org.springframework.beans.factory.annotation.Value;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.context.annotation.Primary;
    
    import com.alibaba.druid.pool.DruidDataSource;
    
    @Configuration
    public class DruidConfig {
        private Logger logger = LoggerFactory.getLogger(DruidConfig.class);
    
        @Value("${spring.datasource.url}")
        private String dbUrl;
    
        @Value("${spring.datasource.username}")
        private String username;
    
        @Value("${spring.datasource.password}")
        private String password;
    
        @Value("${spring.datasource.driver-class-name}")
        private String driverClassName;
    
        @Value("${spring.datasource.initial-size}")
        private int initialSize;
    
        @Value("${spring.datasource.min-idle}")
        private int minIdle;
    
        @Value("${spring.datasource.max-active}")
        private int maxActive;
    
        @Value("${spring.datasource.max-wait}")
        private int maxWait;
    
        @Value("${spring.datasource.time-between-eviction-runs-millis}")
        private int timeBetweenEvictionRunsMillis;
    
        @Value("${spring.datasource.min-evictable-idle-time-millis}")
        private int minEvictableIdleTimeMillis;
    
    //    @Value("${spring.datasource.validation-query}")
    //    private String validationQuery;
    
        @Value("${spring.datasource.test-while-idle}")
        private boolean testWhileIdle;
    
        @Value("${spring.datasource.test-on-borrow}")
        private boolean testOnBorrow;
    
        @Value("${spring.datasource.test-on-return}")
        private boolean testOnReturn;
    
        @Value("${spring.datasource.pool-prepared-statements}")
        private boolean poolPreparedStatements;
    
        @Value("${spring.datasource.max-pool-prepared-statement-per-connection-size}")
        private int maxPoolPreparedStatementPerConnectionSize;
    
        @Value("${spring.datasource.filters}")
        private String filters;
    
    //    @Value("${spring.datasource.connection-properties}")
    //    private String connectionProperties;
    
        @Bean     //声明其为Bean实例
        @Primary  //在同样的DataSource中,首先使用被标注的DataSource
        public DataSource dataSource(){
            DruidDataSource datasource = new DruidDataSource();
    
            datasource.setUrl(this.dbUrl);
            datasource.setUsername(username);
            datasource.setPassword(password);
            datasource.setDriverClassName(driverClassName);
    
            //configuration
            datasource.setInitialSize(initialSize);
            datasource.setMinIdle(minIdle);
            datasource.setMaxActive(maxActive);
            datasource.setMaxWait(maxWait);
            datasource.setTimeBetweenEvictionRunsMillis(timeBetweenEvictionRunsMillis);
            datasource.setMinEvictableIdleTimeMillis(minEvictableIdleTimeMillis);
    //      datasource.setValidationQuery(validationQuery);
            datasource.setTestWhileIdle(testWhileIdle);
            datasource.setTestOnBorrow(testOnBorrow);
            datasource.setTestOnReturn(testOnReturn);
            datasource.setPoolPreparedStatements(poolPreparedStatements);
            datasource.setMaxPoolPreparedStatementPerConnectionSize(maxPoolPreparedStatementPerConnectionSize);
            try {
                datasource.setFilters(filters);
            } catch (SQLException e) {
                logger.error("druid configuration initialization filter", e);
            }
    //      datasource.setConnectionProperties(connectionProperties);
    
            return datasource;
        }
    }
    
    

    复制

    访问数据库

    添加代码验证数据库是否正常连接,添加文件:HelloController.java

    image

    HelloController.java的代码

    package com.qikegu.demo;
    
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.jdbc.core.JdbcTemplate;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RequestMethod;
    import org.springframework.web.bind.annotation.RestController;
    
    @RestController
    public class HelloController {
    
        @Autowired
        JdbcTemplate jdbcTemplate;
    
        @RequestMapping(value="/hello", method=RequestMethod.GET)
        public String index() {
    
            String sql = "SELECT mobile FROM user WHERE id = ?";
    
            // 通过jdbcTemplate查询数据库
            String mobile = (String)jdbcTemplate.queryForObject(
                    sql, new Object[] { 1 }, String.class);
    
            return "Hello " + mobile;
        }
    }
    
    

    复制

    我们使用spring的JdbcTemplate(这正是我们在前面引入spring jdbc依赖的原因),比使用原始的jdbc接口方便。

    运行

    项目的右键菜单,选择:run as -> spring boot app 运行程序(不清楚怎么运行可参考: spring boot hello world (restful接口)例子),使用浏览器访问,输出从数据库中读取的用户手机号

    image

    使用druid的监控功能

    druid的监控功能,可以通过网址:http://localhost:8096/druid/index.html 查看。
    查看DataSource页面,可以看到我们的配置确实生效了:

    image

    总结

    本文介绍了怎样在spring boot项目中集成druid连接池,使用JdbcTemplate访问数据库,验证数据库连接成功。

    完整代码


    Doc navigation

    ← spring boot 连接Mysql

    spring boot集成mybatis(1) →

    展开全文
  • Druid jar包 书写Druid.properties配置文件 driverClassName=com.mysql.jdbc.Driver url=jdbc:mysql://localhost:3306/login username=root password=root initialSize=5 maxActive=10 maxWait=3...
  • 使用Druid连接MySQL时往里插入时出现了中文乱码问题。 解决方法: 1.首先在建立数据库的时候最好使用UTF-8编码,并且最好在建立数据库表的字段时重复设置一下。 2.设置好数据库的编码格式后还要设置连接数据库...
  • #druid.properties文件 #1.不要留空格 #2.propertis类(文件)他的本质就是一个键值对 #3.mysql username=root password=y3361303. driverClassName=com.mysql.cj.jdbc.Driver url=jdbc:mysql://localhost:3306/vip...
  • JDBC JDBC全称是Java Database Connectivity,意思是用Java语言管理关系数据库。...使用JDBC连接MySQL 使用JDBC的时候,只需导入相应数据库的驱动jar包即可。例如,我是用的是MySQL,则需要MySQL的jar
  • <artifactId>mysql-connector-java <!--数据源--> <groupId>com.alibaba</groupId> <artifactId>druid-spring-boot-starter ${druid-spring-boot-starter.version} <!-- spring boot整合mybatis启动器...
  • SpringBoot中Druid无法连接MySQL 相关情况 配置的四个必要项确认无误(driver、url、username、password) 其它连接工具(Datagrip、Navicat、以及IDEA自身的连接都正常) 但是SpringBoot项目中启动却报错,...
  • 在WebContent/WEB_INF/lib文件下和该项目中都应该导入jar包 import java.io.IOException; import java.sql.Connection; import java.sql.Statement; import java.util.HashMap; import java.util.Map; import javax...
  • 数据库连接池之Druid连接池(mysql)

    千次阅读 多人点赞 2019-04-18 08:27:13
    数据库连接池之Druid连接池(mysql) 本仙鱼又更博了,我是勤劳的小蜜蜂嗡嗡嗡~~ 1 Druid简介 Druid 是目前比较流行的高性能的(阿里的),分布式列存储的OLAP框架(具体来说是MOLAP)。它有如下几个特点: 一. 亚秒级...
  • 用阿里巴巴Druid实现的一个简单连接池,高性能,高并发。
  • 最近在开发数据库为oracle的项目,想把druid集成进来,直接使用之前的mysql集成druid的配置,发现调用接口时,一直报sql类型不对,最后再githup找到一个oracle+druid集成的项目,亲测可以使用,并且切换为mysql数据库后,...
  • Druid连接mysql

    2021-05-11 17:01:15
    mysql-connector-java-5.1.37-bin.jar jdbc.driver=com.mysql.jdbc.Driver jdbc.url=jdbc:mysql://localhost:3306/test jdbc.username=root jdbc.password=root 连接池工具类 package com.itheima.utils; import ...
  • druid数据源连接mysql(8.0版本以上),报错Cannot resolve com.mysq.jdbc.Connection.ping method. Will use ‘SELECT 1’ instead. 报错信息是这样的: 警告: Cannot resolve ...
  • 错误 The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server. at com.mysql.cj.jdbc.exceptions.SQLError.createCommunicati...
  • ssm中,使用Druid连接池来连接mysql数据库报错 2020-10-05 20:34:29,510 [Druid-ConnectionPool-Create-1383178166] [com.alibaba.druid.pool.DruidDataSource]-[ERROR] create connection SQLException, url: jdbc:...
  • 1. 特殊说明: 从MySql 8.0(含)以后, 驱动名称使用 ... MySql驱动的下载, 可以参考: https://www.runoob.com/java/java-mysql-connect.html 3. 新建DBUtils类, 参考如下 package com.cwx....
  • <artifactId>mysql-connector-java <scope>runtime <!-- mybatis --> <groupId>org.mybatis.spring.boot <artifactId>mybatis-spring-boot-starter <version>1.3.2 2.yml配置Druid、...
  • 通过使用DButils工具类来操纵c3p0的xml格式配置文件和Druid的properties格式的配置文件数据库连接池进行MYSQL数据库的CRUD package com.zl.dbutil; import java.io.IOException; import java.io.InputStream; ...
  • Spring Boot集成Druid连接池(MySQL8.0.11)

    万次阅读 2018-06-10 18:30:05
    这篇博客简单介绍spring boot集成druid连接池的简单配置和注意事项 本次使用的是MySQL8.0.11版本 前提:一个已经搭建好的Spring Boot项目和可以使用的数据库 注意:MySQL8.0.X的配置和5.7.X有小差异,整体思路...
  • Mysql-connector-java-8.0.11(Mysql连接Java驱动) Druid-1.1.0 工具下载合集 链接:https://pan.baidu.com/s/1g0D9m59nIT2Fq1aSJIxh8A 提取码:66cq 步骤 创建一个java项目JDBCDruid 1. 新建包...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 39,760
精华内容 15,904
关键字:

druidjava项目连接mysql

java 订阅
mysql 订阅