SpringBoot 配置数据库
Posted Harris-H
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SpringBoot 配置数据库相关的知识,希望对你有一定的参考价值。
SpringBoot 配置数据库
1.yml配置mysql
导入依赖
<!--数据库配置-->
<dependency> <!--mysql驱动-->
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.25</version>
</dependency>
<dependency> <!--使用默认数据源-->
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
<version>2.5.0</version>
</dependency>
配置文件
spring:
datasource: #数据源
driver-class-name: com.mysql.cj.jdbc.Driver #数据库驱动
url: jdbc:mysql://localhost:3306/数据库名称?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai # 数据库的 JDBC URL
username: #数据库的登录用户名
password: #数据库的登录密码
2.JDBC-URL的参数详解
mysql JDBC URL格式如下:
jdbc:mysql://[host:port],[host:port].../[database][?参数名1][=参数值1][&参数名2][=参数值2]...
常见的参数
参数名称 | 参数说明 | 缺省值 | 最低版本要求 |
---|---|---|---|
user | 数据库用户名(用于连接数据库) | 所有版本 | |
password | 用户密码(用于连接数据库) | 所有版本 | |
useUnicode | 是否使用Unicode字符集,如果参数characterEncoding设置为gb2312或gbk,本参数值必须设置为true | false | 1.1g |
characterEncoding | 当useUnicode设置为true时,指定字符编码。比如可设置为gb2312或gbk | false | 1.1g |
autoReconnect | 当数据库连接异常中断时,是否自动重新连接? | false | 1.1 |
autoReconnectForPools | 是否使用针对数据库连接池的重连策略 | false | 3.1.3 |
failOverReadOnly | 自动重连成功后,连接是否设置为只读? | true | 3.0.12 |
maxReconnects | autoReconnect设置为true时,重试连接的次数 | 3 | 1.1 |
initialTimeout | autoReconnect设置为true时,两次重连之间的时间间隔,单位:秒 | 2 | 1.1 |
connectTimeout | 和数据库服务器建立socket连接时的超时,单位:毫秒。 0表示永不超时,适用于JDK 1.4及更高版本 | 0 | 3.0.1 |
socketTimeout | socket操作(读写)超时,单位:毫秒。 0表示永不超时 | 0 | 3.0.1 |
serverTimezone | 服务器时区设置 | UTC |
若服务器返回无效的时区。需要设置 ‘‘serverTimezone’’ 属性,serverTimezone=Asia/ShangHai
需要注意的是,在xml配置文件中,url中的&符号需要转义成&。比如在tomcat的server.xml中配置数据库连接池时,mysql jdbc url样例如下:
jdbc:mysql://localhost:3306/test?user=root&password=root&useUnicode=true&characterEncoding=gbk&autoReconnect=true&failOverReadOnly=false
& 表示&
更多参数可以查阅官方文档,或者下面这篇文章。
3.测试
@SpringBootTest
class DemoDatasourceApplicationTests {
@Autowired
DataSourceProperties dataSourceProperties;
@Autowired
protected ApplicationContext applicationContext;
@Autowired
JdbcTemplate jdbcTemplate;
@Test
void contextLoads() {
DataSource dataSource = applicationContext.getBean(DataSource.class); //获取数据源
System.out.println(dataSource);
System.out.println(dataSource.getClass().getName());
System.out.println(dataSourceProperties);
//JdbcTemplate 已经封装一层函数可以直接使用.
List<Map<String, Object>> list = jdbcTemplate.queryForList("select * from dept");
for (Map<String, Object> stringObjectMap : list) {
System.out.println(stringObjectMap);
}
}
}
4.输出结果
HikariDataSource (null)
com.zaxxer.hikari.HikariDataSource
org.springframework.boot.autoconfigure.jdbc.DataSourceProperties@2b38b1f
{DEPTNO=10, DNAME=ACCOUNTING, LOC=NEW YORK}
{DEPTNO=20, DNAME=RESEARCH, LOC=DALLAS}
{DEPTNO=30, DNAME=SALES, LOC=CHICAGO}
{DEPTNO=40, DNAME=OPERATIONS, LOC=BOSTON}
说明Spring-Data 默认使用的是HikariDataSource
数据源。
5.总结
- 导入数据源和JDBC驱动 的依赖包
- 配置文件中配置数据库
- 开始使用
以上是关于SpringBoot 配置数据库的主要内容,如果未能解决你的问题,请参考以下文章
SpringBoot启动报错“Consider defining a bean of type ‘xxx.mapper.UserMapper‘ in your configuration.“(代码片段
SpringBoot中表单提交报错“Content type ‘application/x-www-form-urlencoded;charset=UTF-8‘ not supported“(代码片段