Project Dependencies for Standard JDBC
To configure a data source using Spring Boot's default JDBC support, typically backed by Tomcat JDBC, include the folllowing dependencies in your Maven pom.xml file. This configuration also integrates MyBatis for database mapping.
<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>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.1.2</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
</dependencies>
Application Properties Configuration
In the application.properties file, define the connection parameters and MyBatis mapper locations. This sets up the basic environment for database connectivity.
server.port=8081
# Database Configuration
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/app_db?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC
spring.datasource.username=db_user
spring.datasource.password=db_pass
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
# MyBatis Configuration
mybatis.mapper-locations=classpath:mapper/*.xml
Integrating Druid Data Source
To utilize the Alibaba Druid connection pool, which provides robust monitoring and filtering capabilities, add the Druid dependency to your project alongside the standard starters.
<dependencies>
<!-- Existing dependencies for web, jdbc, mybatis, and mysql -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.22</version>
</dependency>
</dependencies>
YAML Configuration for Druid
Using application.yml, specify the data source type as DruidDataSource and configure the pool properties such as connection size, validation queries, and filters for SQL monitoring and firewall protection.
spring:
datasource:
# Basic Database Connection
url: jdbc:mysql://localhost:3306/demo_db
username: admin
password: secret_password
driver-class-name: com.mysql.cj.jdbc.Driver
type: com.alibaba.druid.pool.DruidDataSource
# Druid Connection Pool Settings
initial-size: 5
min-idle: 5
max-active: 25
max-wait: 60000
time-between-eviction-runs-millis: 60000
min-evictable-idle-time-millis: 300000
validation-query: SELECT 1
test-while-idle: true
test-on-borrow: false
test-on-return: false
pool-prepared-statements: true
# Filters for monitoring and security
filters: stat,wall,slf4j
max-pool-prepared-statement-per-connection-size: 20
use-global-data-source-stat: true
connection-properties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=2000
mybatis:
# MyBatis XML Mapper Locations
mapper-locations: classpath:mybatis/mapper/*.xml
# Global Configuration File
config-location: classpath:mybatis/config.xml