JHHK

欢迎来到我的个人网站
行者常至 为者常成

bug菌_整合mysql

目录

数据库

一、常用数据库

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);
        });
    }
}

行者常至,为者常成!





R
Valine - A simple comment system based on Leancloud.