作为一个新手第一次使用springboot,倍感压力。艰难的上手了springboot+maven+mysql的数据库连接之旅
跟着教程开启一系列流程化的操作
- 在添加pom.xml添加依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
<version>2.7.1</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.30</version>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.5.2</version>
</dependency>
- application.properties配置
server.port=3000
spring.datasource.username=pig
spring.datasource.password=123456
spring.datasource.url=jdbc:mysql://localhost:3306/project?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf-8
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
- 连接测试
package com.kob.backend;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.jdbc.DataSourceProperties;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.jdbc.core.JdbcTemplate;
import javax.sql.DataSource;
import java.sql.SQLException;
@SpringBootTest
class SpringBootJdbcApplicationTests {
//数据源组件
@Autowired
DataSource dataSource;
@Autowired
DataSourceProperties dataSourceProperties;
//用于访问数据库的组件
@Autowired
JdbcTemplate jdbcTemplate;
@Test
void contextLoads() throws SQLException {
System.out.println("默认数据源为:" + dataSource.getClass());
System.out.println(dataSourceProperties.getUsername());
System.out.println(dataSourceProperties.getPassword());
System.out.println("数据库连接实例:" + dataSource.getConnection());
//访问数据库
Integer i = jdbcTemplate.queryForObject("SELECT count(*) from `user`", Integer.class);
System.out.println("user 表中共有" + i + "条数据。");
}
}
第一个坑
于是第一个坑到了!!!
在配置好之后一直显示
com.mysql.cj.exceptions.CJCommunicationsException: Communications link failure
这是什么原因呢!
找了好多方法都找不到原因,最后发现了这篇博文数据库连接报错,发现是数据库的user没有任何主机都可以连接的权限,于是在mysql中加上了该权限。
第二个坑
在pom.xml一开始导入了spring-boot-starter-security,然后打开就是login界面,跳转不到其他界面。
解决方法有以下两周:
- 取消该功能:在主程序采用@SpringBootApplication(exclude = {SecurityAutoConfiguration.class})
- 采用用户名和密码登录:登录页面默认用户名是user,密码是生成的密码