目录
数据库
一、常用数据库
SQLite 是世界上最流行的嵌入式数据库。
适合本地 / 单机使用,比如手机 App 本地存储。
xx.db文件,可以直接读取。
mac自带sqlite.
MySQL专业级数据库服务,需要安装、启动服务。
适合网站、后台系统、高并发业务。
xx.ibd文件,不能直接读取,需要在mysql创建一个新的yy.ibd,并将xx.ibd的数据导入才能读取。因为数据库中的ibd文件都带有身份标识,外来数据库文件无法直接读取。
mac需要安装mysql.
二、mysql的安装和初始化
## 安装 MySQL
brew install mysql
## 启动 MySQL 服务
brew services start mysql
## 设置 root 密码(重要)这里会进行一系列的初始化设置,请根据英文提示进行选择
mysql_secure_installation
## 登录mysql,输入下面指令会让输入上一步设置的密码,进行登录
mysql -u root -p
## 当看到下面这样的提示,证明已经登录成功了
╰─ mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 11
Server version: 9.6.0 Homebrew
Copyright (c) 2000, 2026, Oracle and/or its affiliates.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
## 查看所有数据库
show databases;
## 退出数据库
exit;
## 创建一个数据库
create database HelloSpring;
## 使用这个数据库。看到Database changed说明现在所有的 SQL 操作,都会针对这个项目库生效。
mysql> use HelloSpring;
Database changed
mysql>
## 创建一个表
CREATE TABLE `user` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键id',
`name` varchar(255) NOT NULL COMMENT '用户名',
`age` int(11) DEFAULT NULL COMMENT '年龄',
`sex` varchar(2) DEFAULT NULL COMMENT '性别',
`address` varchar(255) DEFAULT NULL COMMENT '住址',
`describes` varchar(255) DEFAULT NULL COMMENT '描述',
`image` varchar(255) DEFAULT NULL COMMENT '头像',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=60 DEFAULT CHARSET=utf8;
## 查看表
show tables;
## 查看表结构
desc user;
## 插入三条数据
INSERT INTO `user`(`id`, `name`, `age`, `sex`, `address`, `describes`, `image`) VALUES (1, '刘亦菲', 70, '女', '上海闵行', '这是db1的用户', './template/image/刘亦菲.jpg');
INSERT INTO `user`(`id`, `name`, `age`, `sex`, `address`, `describes`, `image`) VALUES (2, '杨幂', 20, '女', '北京朝阳', '这是db1的用户', './template/image/杨幂.jpg');
INSERT INTO `user`(`id`, `name`, `age`, `sex`, `address`, `describes`, `image`) VALUES (3, '彭于晏', 30, '男', '河北邯郸', '这是db1的用户', './template/image/彭于晏.jpg');
## 查看表内的数据
select * from user;
三、数据库的读取
1、借助读取工具进行连接读取,比如navicat
2、通过命令行读取。连接mysql后通过指令和sql进行读取。
3、idea也有读取mysql的工具database,但想要使用可视化功能需要专业版。
4、spring boot 整合mysql,可以通过代码来读取数据库。(下面会介绍)。
四、补充
正常的商业级开发,数据库是不会部署在本地的,一般是部署在云服务器。
后台开发者,只需要连接数据库就可以了。
Spring Boot 整合mysql
一、依赖项添加
<dependencies>
<!--
作用:帮你自动生成 getter、setter、toString、构造方法不用手写一堆 getXXX() setXXX(),代码更干净。
必须吗? 非常推荐,几乎所有项目都用。
-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.30</version>
<scope>provided</scope>
</dependency>
<!--引入jdbc stater 目的是使用JDBC模板接口-->
<!--
作用:Spring 自带的简单数据库操作工具可以用 JdbcTemplate 操作数据库。
必须吗? 你现在可以删掉!因为你用了 MyBatis-Plus,它已经包含了这个功能。
-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<!-- MySQL 驱动(新版,必须用这个) -->
<!--
作用:Java 程序和 MySQL 说话的 “翻译官”没有它,SpringBoot 根本连不上数据库。
必须吗? 必须!连数据库必用。
-->
<dependency>
<groupId>com.mysql</groupId>
<artifactId>mysql-connector-j</artifactId>
<scope>runtime</scope>
</dependency>
<!--mybatis-plus-->
<!--
作用:数据库操作神器!不用写 SQL,就能实现增删改查。你现在的项目核心依赖。
必须吗? 必须!你就是用它操作 user 表。
-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.5.3.1</version>
</dependency>
<!--代码生成器(可选)-->
<!--
作用 自动生成:实体类、Mapper、Service、Controller输入表名 → 一键生成全套代码。
必须吗?新手可以不用,属于辅助工具。
-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
<version>3.5.3.1</version>
</dependency>
<!-- 代码生成器需要模板引擎 -->
<!--
作用:代码生成器生成代码时需要的模板。
必须吗?不用代码生成器就可以删。
-->
<dependency>
<groupId>org.freemarker</groupId>
<artifactId>freemarker</artifactId>
</dependency>
<!--
作用:解决你最开始的报错:Cannot resolve symbol 'Resource'让你能使用 @Resource 注解注入对象。
必须吗?必须!
-->
<dependency>
<groupId>jakarta.annotation</groupId>
<artifactId>jakarta.annotation-api</artifactId>
<version>2.1.1</version>
</dependency>
</dependencies>
二、配置文件进行配置
##jdbc:mysql:// 用 JDBC 协议连接 MySQL
#localhost 数据库在本机(你自己的电脑)
#3306 MySQL 默认端口号(固定不用改)
#HelloSpring 你要连接的数据库名字(就是你创建的那个库)
#serverTimezone=GMT%2B8 设置时区为 东八区(中国时间),必须加,否则报错
#useUnicode=true 使用 Unicode 字符集
#characterEncoding=utf-8 编码用 UTF-8,防止中文乱码
spring.datasource.url=jdbc:mysql://localhost:3306/HelloSpring?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf-8
#MySQL 的登录用户名
spring.datasource.username=root
#MySQL 登录密码
spring.datasource.password=123456
#MySQL 驱动类作用:让 Java 程序能 “听懂” MySQL 的语言
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
三、测试用例进行测试
package com.lxy.hellospring;
import com.lxy.hellospring.module.user.model.UserEntity;
import jakarta.annotation.Resource;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
import lombok.extern.slf4j.Slf4j;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.RowMapper;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.List;
@SpringBootTest
@Slf4j
class HelloSpringApplicationTests {
@Resource
private JdbcTemplate jdbcTemplate;
@Test
void contextLoads() {
String sql ="select * from user";
List<UserEntity> users = jdbcTemplate.query(sql, new RowMapper<UserEntity>() {
@Override
public UserEntity mapRow(ResultSet rs, int rowNum) throws SQLException {
UserEntity user = new UserEntity();
user.setId(rs.getInt("id"));
user.setAge(rs.getInt("age"));
user.setName(rs.getString("name"));
user.setSex(rs.getString("sex"));
user.setAddress(rs.getString("address"));
user.setDescribes(rs.getString("describes"));
user.setImage(rs.getString("image"));
return user;
}
});
log.info("查询成功");
users.forEach(p->{
log.info("用户{}",p);
});
}
}
行者常至,为者常成!