Pool de connexion HikariCP
SpringBoot utilise par défaut HikariCP comme pool de connexion, aucune dépendance externe n'est nécessaire.
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/mabd?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=UTC
username: admin
password: admin123
hikari:
#Nombre minimum de connexions inactives
minimum-idle: 5
#Validation automatique des connexions retournées au pool
auto-commit: true
#Durée maximale d'inactivité, 10 secondes
idle-timeout: 10000
#Durée de vie maximale d'une connexion dans le pool
max-lifetime: 1800000
#Délai d'expiration de la connexion à la base de données
connection-timeout: 30000
Pool de connexion Druid
Cliquez ici pour voir la méthode de connexion statique à la base de données avec SpringBoot
spring:
datasource:
druid:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/mabd?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=UTC
username: admin
password: admin123
# Taille initiale, minimale et maximale
initial-size: 5
max-active: 20
min-idle: 3
# Délai d'attente pour obtenir une connexion
max-wait: 60000
# Intervalle de vérification des connexions inactives à fermer (millisecondes)
time-between-eviction-runs-millis: 60000
# Durée minimale de vie d'une connexion dans le pool (millisecondes)
min-evictable-idle-time-millis: 300000
# Activer PSCache et spécifier la taille par connexion
pool-prepared-statements: true
max-pool-prepared-statement-per-connection-size: 20
# Filtres pour监控 et statistiques, wall pour pare-feu, log4j pour les logs
filters: stat,wall,slf4j
# Propriétés de connexion pour activer mergeSql et enregistrer les requêtes lentes
connection-properties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000
Ajout des dépendances
Choisir l'une des deux options
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.1.20</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.9</version>
</dependency>
Création de la classe de configuraton
import javax.sql.DataSource;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import com.alibaba.druid.pool.DruidDataSource;
@Configuration
public class DatabaseConfig {
@Bean
@ConfigurationProperties(prefix = "spring.datasource.druid")
public DataSource creerSourceDonnees() {
return new DruidDataSource();
}
}
Paramètres de la chaîne de connexion JDBC
jdbc:mysql://localhost:3306/maboutique?useSSL=false&serverTimezone=UTC&useUnicode=true&characterEncoding=utf8&autoReconnect=true&failOverReadOnly=false
| Paramètre | Description | Valeur par défaut | Version minimale |
|---|---|---|---|
| user | Nom d'utilisateur de la base de données | - | Toutes versions |
| password | Mot de passe utilisateur | - | Toutes versions |
| useUnicode | Utilisation du jeu de caractères Unicode | false | 1.1g |
| characterEncoding | Encodage des caractères (gb2312 ou gbk) | false | 1.1g |
| autoReconnect | Reconnexion automatique en cas de coupure | false | 1.1 |
| autoReconnectForPools | Stratégie de reconnexion pour les pools | false | 3.1.3 |
| failOverReadOnly | Lecture seule après reconnexion | true | 3.0.12 |
| maxReconnects | Nombre de tentatives de reconnexion | 3 | 1.1 |
| initialTimeout | Intervalle entre les reconnexions (secondes) | 2 | 1.1 |
| connectTimeout | Délai de connexion socket (ms) | 0 | 3.0.1 |
| socketTimeout | Délai opérations socket (ms) | 0 | 3.0.1 |
jdbc:mysql://localhost:3306/maboutique
Connexion à la base de données locale : maboutique, port : 3306
useUnicode=true&characterEncoding=UTF-8
Résolution des problèmes d'encodage : activation du support Unicode avec utf8.
serverTimezone=UTC
La configuration serverTimezone=UTC est nécessaire avec le driver JDBC MySQL 6+ (com.mysql.cj.jdbc.Driver) pour spécifier le fuseau horaire. UTC est le temps universel coordonné, soit 8 heures avant l'heure de Beijing. Il est également possible de configurer serverTimezone=CST ou serverTimezone=Asia/Shanghai.
useSSL=false
Pour MySQL version 5.7+, le paramètre useSSL=false est obligatoire. Les versions antérieures n'ont pas besoin de ce paramètre car la valeur par défaut est false. L'utilisation de useSSL=false est recommandée, particulièrement lors du déploiement sur Linux. useSSL=true requiert des certiifcats de sécurité tandis que useSSL=false utilise simplement login/mot de passe.
autoReconnect=true&failOverReadOnly=false
Configuration autoReconnect=true pour tenter une reconnexion automatique après une déconnexion. Attribution failOverReadOnly=false pour empêcher le mode lecture seule lors du basculement.
zeroDateTimeBehavior=convertToNull
Lorsque la base de données retourne une date '0000-00-00 00:00:00', le driver JDBC la convertit en null en Java, évitant ainsi les erreurs liées aux valeurs de date/heure invalides.
rewriteBatchedStatements=true
Ce paramètre permet au driver de réécrire les instructions SQL groupées pour une exécution plus efficace.
Résultat :
INSERT INTO nom_table (colonne1, colonne2) VALUES (valeur1a, valeur2a), (valeur1b, valeur2b), (valeur1c, valeur2c);