SpringBoot学习3.0-访问mysql

目录

1.引入依赖

2.建库建表

3.数据库配置

4.测试连接

5.异常解决

6.数据库连接池配置

6.1 默认的连接池

6.2 配置自定义的连接池-dbcp2


数据库的下载安装参考:

mysql安装简要说明

mysql常见命令

1.引入依赖

<!-- 连接数据库依赖  -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
		
<!-- mysql依赖  -->
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <scope>runtime</scope>
</dependency>

2.建库建表

/*创建数据库 SpringBootLearn*/
CREATE SCHEMA SpringBootLearn; 

/*创建用户*/
CREATE USER 'springdb'@'%' IDENTIFIED BY 'springdb';

/*授予所有的权限,但不能给其它用户授权*/
GRANT ALL ON *.* TO 'springdb'@'%';

/*设置时区(在mysql中设置时区,默认为SYSTEM)*/
set global time_zone='+8:00';

/*用户表*/
CREATE TABLE t_user (
    id INT(12) NOT NULL AUTO_INCREMENT,
    name VARCHAR(50) NOT NULL,
    sex INT(1) NOT NULL,
    note VARCHAR(200) NULL,
    PRIMARY KEY (id)
)
DEFAULT CHARACTER SET = utf8;
 

3.数据库配置

springboot配置文件:src/main/resources/application.properties

spring.datasource.url=jdbc:mysql://localhost:3306/SpringBootLearn
spring.datasource.username=springdb
spring.datasource.password=springdb

SpringBootLearn为数据库名称或schema名称。

4.测试连接

表数据如下:

junit测试代码:

@RunWith(SpringRunner.class)
@SpringBootTest
public class SpringDbApplicationTests {
	@Autowired
	private JdbcTemplate jdbcTemplate;
	@Test
	public void contextLoads() {
		List<Map<String, Object>> list = jdbcTemplate.queryForList("select * from t_user");
		System.out.println(list);	
	}
}

测试结果:

[{id=1, name=zhangsan, sex=1, note=测试}]

5.异常解决

5.1 遇到时区问题参考:

mysql8.0.11运行报The server time zone value '?D1ú±ê×?ê±??' is unrecognized or represents more ..解决办法

或者数据库连接配置添加 serverTimezone=UTC 

spring.datasource.url=jdbc:mysql://localhost:3306/SpringBootLearn?serverTimezone=UTC

5.2 表中中文变成问号

数据库连接配置添加:useUnicode=yes&characterEncoding=utf8

spring.datasource.url=jdbc:mysql://localhost:3306/SpringBootLearn?serverTimezone=UTC&useUnicode=yes&characterEncoding=utf8

6.数据库连接池配置

上述为最基本的配置,很多配置都是springboot默认完成。

6.1 默认的连接池

监测连接池的代码:

@Component
public class DataSourceService implements ApplicationContextAware {
	ApplicationContext applicationContext;
	@Override
	public void setApplicationContext(ApplicationContext arg0) throws BeansException {
		this.applicationContext = arg0;
		DataSource ds = applicationContext.getBean(DataSource.class);
		System.out.println("数据库连接池:" + ds.getClass().getName());
	}
}

结果:

数据库连接池:com.zaxxer.hikari.HikariDataSource

以上没对数据库连接池做任何配置,可见spring boot 2.0的版本默认连接池为HikariCP,官方推荐

6.2 配置自定义的连接池-dbcp2

引入依赖-dbcp2数据库连接池:

<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-dbcp2</artifactId>
</dependency>

application.properties配置数据源类型

spring.datasource.type=org.apache.commons.dbcp2.BasicDataSource

利用6.1的测试代码,输出:

数据库连接池:org.apache.commons.dbcp2.BasicDataSource

application.properties可以增加如下配置:

#--------------连接池配置dbcp2 start --------------#
#数据库连接池 dbcp2(不配置则默认使用HikariCP)
spring.datasource.type=org.apache.commons.dbcp2.BasicDataSource
#可以在池中保持空闲的最大连接数,超出设置值之外的空闲连接将被回收,如设置为负数,则不限制
spring.datasource.dbcp2.max-idle=10
#可以在这个池中同时被分配的有效连接数的最大值,如设置为负数,则不限制
spring.datasource.dbcp2.max-total=50
#(如果没有可用连接)池在抛出异常前等待的一个连接被归还的最大毫秒数,设置为-1则等待时间不确定
spring.datasource.dbcp2.max-wait-millis=10000
#池被启动时初始化的创建的连接个数
spring.datasource.dbcp2.initial-size=5
#--------------连接池配置dbcp2 end --------------#

dbcp2详细配置参考:common-dbcp2数据库连接池参数说明

连接池使用策略参考:Spring Boot之默认连接池配置策略

 

github:https://github.com/zhangyangfei/SpringBootLearn  其中的springDb工程。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值