Java 中 Spring Boot 连接 MySql 数据库
上一篇文章 Java Web 编写 Restful API 中,我们用临时存储,模拟了 Restful API
。本文,我们将连接数据库 MySql
~
Demo
的相关环境如下:
java
版本11
Spring Boot
版本2.7.12
- 基于
mac m1
-macOS Monterrey 版本 12.4
- 安装的
mysql
版本如下文展示
MySql 准备工作
查看是否安装 MySql
我们通过 mysql -V
查看 mac
上是否安装了 mysql
:
安装 MySql
这里,我们通过 brew
安装 mysql
- brew install mysql
,下图是安装成功的状态。
安装的
mysql
版本为8.0.33
启动 MySql
通过 brew services start mysql
启动 MySql
服务:
启动之后,MySql
服务默认的端口号是 3306
,账号是 root
,密码为空。
还有其他常见操作如下:
- 重启
MySql
服务 -brew services restart mysql
- 停止
MySql
服务 -brew services stop mysql
Navicat 创建 MySql 连接名、数据库和表
这里我们使用 Navicat
工具创建 MySql
连接名、数据库和表。当然,读者可通过命令行进行创建,这个坑会在后面的文章进行填补。
创建 MySql 连接名
连接名这里取名为 jimmy_test
并测试连接。
创建 MySql 数据库
然后,我们鼠标右击连接名 jimmy_test
创建数据库:
我们创建了名为 mydb_01
的数据库。
创建 MySql 数据库表
我们创建名为 user
的用户表,用于存储用户的数据,该表也是方便后面的测试。
鼠标右击
mydb_01
下的表 -> 新建表
该表下只有简单的两个字段:name
和 age
。
验证连接 MySql
我们参考之前文章 IntelliJ IDEA 创建 Java Web 项目 创建名为 chapter3-1
的项目。
整个项目的目录结构如下图:
我们在 pom.xl
中添加 mysql
依赖。这里我安装的是 mysql 版本是 8.0.33
,所以在 spring boot 的 pom.xml
中添加该依赖如下:
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.33</version>
</dependency>
完整的 pom.xl
文件如下:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.7.12</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.example</groupId>
<artifactId>chapter3-1</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>chapter3-1</name>
<description>chapter3-1</description>
<properties>
<java.version>11</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.33</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.26</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
然后,我们在 src/main/resources/application.properties
文件中设置连接的数据库信息:
spring.datasource.url=jdbc:mysql://localhost:3306/mydb_01
spring.datasource.username=root
spring.datasource.password=
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
我们在 com.example.chapter31/Chapter31Application.java
文件同级建立表信息文件 User.java
,抽象接口类 UserService.java
和服务实现类 UserServiceImpl.java
。具体的内容如下:
// User.java
// 创建表
package com.example.chapter31;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@NoArgsConstructor
public class User {
private String name; // 用户名,字符串类型
private Integer age; // 年龄,正数类型
}
这里的用户表字段只有 name
和 age
,对应刚才设置的数据库用户表的字段。
设定抽象接口:
// UserService.java
// 抽象接口
package com.example.chapter31;
import java.util.List;
public interface UserService {
// 新增用户
int create(String name, Integer age);
// 查询指定用户
List<User> getByName(String name);
// 删除指定用户
int deleteByName(String name);
// 获取所有用户总量
int getAllUsers();
// 删除所有用户
int deleteAllUsers();
}
之后,我们实现相关的用户服务:
package com.example.chapter31;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class UserServiceImpl implements UserService {
private JdbcTemplate jdbcTemplate;
UserServiceImpl(JdbcTemplate jdbcTemplate) {
this.jdbcTemplate = jdbcTemplate;
}
// 创建用户
@Override
public int create(String name, Integer age) {
return jdbcTemplate.update("insert into USER(NAME, AGE) values(?, ?)", name, age);
}
// 根据用户名获取数据
@Override
public List<User> getByName(String name) {
List<User> users = jdbcTemplate.query("select NAME, AGE from USER where NAME = ?", (resultSet, i) -> {
User user = new User();
user.setName(resultSet.getString("NAME"));
user.setAge(resultSet.getInt("AGE"));
return user;
}, name);
return users;
}
// 根据用户名删除数据
@Override
public int deleteByName(String name) {
return jdbcTemplate.update("delete from USER where NAME = ?", name);
}
// 获取所有用户的条数
@Override
public int getAllUsers() {
return jdbcTemplate.queryForObject("select count(1) from USER", Integer.class);
}
// 删除所有的用户
@Override
public int deleteAllUsers() {
return jdbcTemplate.update("delete from USER");
}
}
最后,我们在 test/java/com.example.chapter31/Chapter31ApplicationTests.java
的文件中进行测试,这里只是测试了添加用户,其他的操作类似:
package com.example.chapter31;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
@RunWith(SpringRunner.class)
@SpringBootTest
public class Chapter31ApplicationTests {
@Autowired
private UserService userService;
@Before
public void setUp() {
// 清空user表
userService.deleteAllUsers();
}
@Test
public void test() throws Exception {
// 创建用户
userService.create("Jimmy", 1);
}
}
然后点击运行,如图:
我们本地打开数据库 mydb_01
,就可以看到该数据库的用户表下生成了一条数据:
参考
- 使用 SpringBoot 连接 MySQL 数据库,快速上手「建议收藏」
- Navicat 16 最新版Mac安装与永久激活教程
- mysql 创建连接名、数据库、表
- Spring Boot 2.x基础教程:使用 JdbcTemplate 访问 MySQL 数据库
- IDEA 使用—报错 Could not autowire. No beans of ''XXXXX" type found.
相关阅读
转载自:https://juejin.cn/post/7238238706455593015