# HikariCP

要用数据库首先想到的配置就是数据源,这里使用 HiKariCP (opens new window),它是一个 快速、简单、可靠的数据库连接池,Spring Boot 2.0 时默认的数据库连接池使用了 HiKariCP

可以在官方的 GitHub 上去详细阅读

# 与 MyBatis 整合

引入 mysql 驱动与 mybatis

 <!-- mysql驱动 -->
<dependency>
  <groupId>mysql</groupId>
  <artifactId>mysql-connector-java</artifactId>
</dependency>
<!-- mybatis -->
<dependency>
  <groupId>org.mybatis.spring.boot</groupId>
  <artifactId>mybatis-spring-boot-starter</artifactId>
  <version>2.1.0</version>
</dependency>
1
2
3
4
5
6
7
8
9
10
11

在 yml 中增加数据源和 MyBatis 的配置

############################################################
#
# 内置 tomcat 配置
# web 访问端口号 约定 8088
#
############################################################
server:
  port: 8088
  tomcat:
    uri-encoding: utf-8
  max-http-header-size: 80KB

############################################################
#
# 配置数据源信息
#
############################################################
spring:
  datasource:
    type: com.zaxxer.hikari.HikariDataSource                # 数据源类型:HikariCP
    driver-class-name: com.mysql.cj.jdbc.Driver             # 数据源的相关配置
    url: jdbc:mysql://localhost:3306/foodie-shop-dev?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true
    username: root
    password: root
    hikari:
      connection-timeout: 30000       # 等待连接池分配连接的最大时长(毫秒),超过这个时长还没可用的连接则发生SQ
      minimum-idle: 5                 # 最小连接数
      maximum-pool-size: 20           # 最大连接数
      auto-commit: true               # 自动提交
      idle-timeout: 600000            # 连接超时的最大时长(毫秒),超时则被释放(retired),默认:10分钟
      pool-name: DateSourceHikariCP   # 连接池名字
      max-lifetime: 1800000           # 连接的生命时长(毫秒),超时而且没被使用则被释放(retired),默认:30分钟
      connection-test-query: SELECT 1

############################################################
#
# mybatis 配置
#
############################################################
mybatis:
  type-aliases-package: cn.mrcode.foodiedev.pojo    # 实体层
  mapper-locations: classpath:mapper/*.xml          # mapper 层
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42

记得在对应的模块中创建包。

重启如果不报错,而且还可以访问的话,则说明没有什么问题。

# Mysql 5.7 数据库准备

docker mysql 官方文档 (opens new window)

此节并不是课程中的,由于笔者电脑上没有 mysql 数据库,只能重新装一个,这里简单记录下

docker pull mysql:5.7.33
1

docker-compose.yml

version: '3.1'

services:

  mysql5.7:
    image: mysql:5.7.33
    command: --default-authentication-plugin=mysql_native_password
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: root

    volumes:
      - ./mysql/mysql5.7/my.cnf:/etc/mysql/my.cnf
      - ./mysql/mysql5.7/data:/var/lib/mysql
    ports:
      - 3306:3306
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

# 数据源连接数详解

      minimum-idle: 5                 # 最小连接数
      maximum-pool-size: 20           # 最大连接数
1
2

这里的讲解,笔者并没有听到想要的,简单说是与硬件有关系,比如 4 核设置为 10,8 核设置为 20,但是不明白最大连接数 20 真的够用吗?

对于最大连接数和最小连接数的配置,HikariCP 的作者建议设置为一样的,原因猜测可能是因为:

  • HikariCP 是一个轻量高效率的连接池
  • 对于一个网站,不太可能会有太多的时间链接被空着(当然要先回答笔者对于最大连接数的疑问后才能想明白)