POM

4.0.0

org.springframework.boot

spring-boot-starter-parent

2.1.2.RELEASE

com.boolib

mysql-druid

0.0.1-SNAPSHOT

mysql-druid

Demo project for Spring Boot

1.8

org.springframework.boot

spring-boot-starter-thymeleaf

org.springframework.boot

spring-boot-starter-web

org.mybatis.spring.boot

mybatis-spring-boot-starter

1.3.2

org.springframework.boot

spring-boot-devtools

runtime

mysql

mysql-connector-java

runtime

org.projectlombok

lombok

true

org.springframework.boot

spring-boot-starter-test

test

com.alibaba

druid

1.1.12

org.springframework.boot

spring-boot-maven-plugin

org.mybatis.generator

mybatis-generator-maven-plugin

src/main/resources/xml/mybatis-generator.xml

true

true

mysql

mysql-connector-java

5.1.46

properties

#配置tomcat插件启动端口号

#server.port=8081

#中文及编码配置

#server.tomcat.uri-encoding=UTF-8

#spring.http.encoding.charset=UTF-8

#spring.http.encoding.enabled=true

#spring.http.encoding.force=true

#spring.messages.encoding=UTF-8

#配置DataSource,使用druid

#需要注意的是:spring.datasource.type属性,旧的spring boot版本是不能识别的。

spring.datasource.type=com.alibaba.druid.pool.DruidDataSource

spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

spring.datasource.url=jdbc:mysql://localhost:3306/orders?serverTimezone=UTC

spring.datasource.username=root

spring.datasource.password=root

# 连接池的配置信息

# 初始化大小,最小,最大

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.validationQuery=SELECT 1 FROM DUAL

spring.datasource.testWhileIdle=true

spring.datasource.testOnBorrow=false

spring.datasource.testOnReturn=false

# 打开PSCache,并且指定每个连接上PSCache的大小

spring.datasource.poolPreparedStatements=true

spring.datasource.maxPoolPreparedStatementPerConnectionSize=20

# 配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙

spring.datasource.filters=stat,wall

# 通过connectProperties属性来打开mergeSql功能;慢SQL记录

spring.datasource.connectionProperties=druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000

mybatis.mapper-locations=classpath:mapper/*Mapper.xml

druidConfig

package com.boolib.mysqldruid.config;

import com.alibaba.druid.pool.DruidDataSource;

import lombok.extern.slf4j.Slf4j;

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 javax.sql.DataSource;

import java.sql.SQLException;

@Slf4j

@Configuration

public class DruidConfig {

@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.initialSize}")

private int initialSize;

@Value("${spring.datasource.minIdle}")

private int minIdle;

@Value("${spring.datasource.maxActive}")

private int maxActive;

@Value("${spring.datasource.maxWait}")

private int maxWait;

@Value("${spring.datasource.timeBetweenEvictionRunsMillis}")

private int timeBetweenEvictionRunsMillis;

@Value("${spring.datasource.minEvictableIdleTimeMillis}")

private int minEvictableIdleTimeMillis;

@Value("${spring.datasource.validationQuery}")

private String validationQuery;

@Value("${spring.datasource.testWhileIdle}")

private boolean testWhileIdle;

@Value("${spring.datasource.testOnBorrow}")

private boolean testOnBorrow;

@Value("${spring.datasource.testOnReturn}")

private boolean testOnReturn;

@Value("${spring.datasource.poolPreparedStatements}")

private boolean poolPreparedStatements;

@Value("${spring.datasource.maxPoolPreparedStatementPerConnectionSize}")

private int maxPoolPreparedStatementPerConnectionSize;

@Value("${spring.datasource.filters}")

private String filters;

@Value("{spring.datasource.connectionProperties}")

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

log.error("druid configuration initialization filter" );

}

datasource.setConnectionProperties(connectionProperties);

return datasource;

}

}

DruidServlet配置

package com.boolib.mysqldruid.config.druid;

import com.alibaba.druid.support.http.StatViewServlet;

import javax.servlet.annotation.WebInitParam;

import javax.servlet.annotation.WebServlet;

@WebServlet(urlPatterns = "/druid/*",

initParams = {

@WebInitParam(name="allow",value = "127.0.0.1"),

// @WebInitParam(name="loginUsername",value = "admin",description = "druid用户名"),

// @WebInitParam(name="loginPassword",value = "1234",description = "druid密码"),

@WebInitParam(name="resetEnable",value = "false")

})

public class DruidServlet extends StatViewServlet {

private static final long serialVersionUID = 1L;

}

Druid拦截器配置

package com.boolib.mysqldruid.config.druid;

import com.alibaba.druid.support.http.WebStatFilter;

import javax.servlet.annotation.WebFilter;

import javax.servlet.annotation.WebInitParam;

@WebFilter(

filterName = "druidWebStatFilter",urlPatterns = "/*",

initParams = {

@WebInitParam( name="exclusions",value = "*.js,*.css,*.ico,/druid/*")

} )

public class DruidFilter extends WebStatFilter {

}

启动项

package com.boolib.mysqldruid;

import org.mybatis.spring.annotation.MapperScan;

import org.springframework.boot.SpringApplication;

import org.springframework.boot.autoconfigure.SpringBootApplication;

import org.springframework.boot.web.servlet.ServletComponentScan;

@ServletComponentScan

@SpringBootApplication

@MapperScan(basePackages = "com.boolib.mysqldruid.mapper")

public class MysqlDruidApplication {

public static void main(String[] args) {

SpringApplication.run(MysqlDruidApplication.class, args);

}

}

8b5be1849574ce8c7a43ded3a88cdb5d.png

image.png

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐