数据源自动配置(DataSourceAutoConfiguration)
1. 数据源自动配置支持功能一览
- 嵌入式数据库支持,支持 H2, Derby,HSQL 等嵌入式数据库;
- 支持 Hikari, Tomcat, DBCP2, Generic 等多种数据库连接池配置;Hikari是默认的数据库连接池,号称是Java平台最快的。
- 通过执行脚本初始化数据源;
- 数据库连接池Metadata Provider支持;
2. 配置H2嵌入式数据库
2.1 添加H2数据库依赖
<dependency> <groupId>com.h2database</groupId> <artifactId>h2</artifactId> </dependency>
2.2 配置H2数据库
spring: h2: console: # 控制台访问路径 path: /h2-console # 是否启用控制台 enabled: true # 是否允许远程访问 settings: web-allow-others: true
2.3 数据源配置
spring: datasource: # 嵌入式数据库连接方式 embeddedDatabaseConnection: EmbeddedDatabaseConnection.H2 # 数据库名称 name: sbia_demo # schema脚本 schema: classpath:sbia_demo_schema.sql # 数据脚本 data: classpath:sbia_demo_data.sql # 连接池类型 type: com.zaxxer.hikari.HikariDataSource
2.4 Hikari连接池配置
spring: hikari: ## Hikari 连接池配置 ------ 详细配置请访问:https://github.com/brettwooldridge/HikariCP ## 最小空闲连接数量 minimum-idle: 5 ## 空闲连接存活最大时间,默认600000(10分钟) idle-timeout: 180000 ## 连接池最大连接数,默认是10 maximum-pool-size: 10 ## 此属性控制从池返回的连接的默认自动提交行为,默认值:true auto-commit: true ## 连接池名字 pool-name: MyHikariCP ## 此属性控制池中连接的最长生命周期,值0表示无限生命周期,默认1800000即30分钟 max-lifetime: 1800000 ## 数据库连接超时时间,默认30秒,即30000 connection-timeout: 30000 connection-test-query: SELECT 1
2.5 数据源预置Schema和数据信息
schema
CREATE TABLE `demo_user` ( `id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT 主键, `code` varchar(20) NOT NULL DEFAULT COMMENT 编码, `name` varchar(20) NOT NULL DEFAULT COMMENT 名字, `birthday` date NOT NULL COMMENT 生日, `sex` tinyint(4) NOT NULL COMMENT 性别, `demo` varchar(100) DEFAULT NULL COMMENT 备注, `create_user` varchar(20) NOT NULL DEFAULT COMMENT 创建用户, `create_time` datetime NOT NULL COMMENT 创建时间, `update_user` varchar(20) DEFAULT NULL COMMENT 更新用户, `update_time` datetime DEFAULT NULL COMMENT 更新时间, `ts` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT 时间戳, `dr` tinyint(4) NOT NULL DEFAULT 0 COMMENT 逻辑删除标识位。0:未删除;1:已删除, PRIMARY KEY (`id`) );
data
INSERT INTO `demo_user` (`id`, `code`, `name`, `birthday`, `sex`, `demo`, `create_user`, `create_time`, `update_user`, `update_time`, `ts`, `dr`) VALUES (1,zhangsan,张三,1983-01-01,1,NULL,system,2019-08-08 00:00:00,system,2019-08-08 00:00:00,2019-08-14 16:28:32,0), (8,lisi,李四,1984-01-01,1,NULL,system,2019-08-08 00:00:00,system,2019-08-08 00:00:00,2019-08-14 16:29:30,0), (9,wangermazi,王二麻子,1985-01-01,1,NULL,system,2019-08-08 00:00:00,system,2019-08-08 00:00:00,2019-08-14 16:29:47,0);
3. H2控制台
3.1 访问H2控制台
访问URL: http://localhost:8080/h2-console JDBC URL: jdbc:h2:mem:sbia_demo;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE
3.2 查看预置数据
可以看到预置的DEMO_USER表以及预置数据。
4. MYSQL数据源配置参考
Maven Dependency
<dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.45</version> </dependency>
Configuration File
## MYSQL数据库配置 spring.datasource.type=com.zaxxer.hikari.HikariDataSource spring.datasource.driverClassName = com.mysql.jdbc.Driver spring.datasource.url = jdbc:mysql://localhost:3306/sbia_demo?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true spring.datasource.username = user spring.datasource.password = password