feat(database): 添加 MySQL 数据库支持并迁移数据表结构
- 新增 MySQL 5.7.44 建表脚本,包含分组、图片、Markdown文件等7张表 - 添加 SQLite 转 MySQL 的数据库迁移脚本 - 配置开发环境使用 MySQL 数据源连接 - 更新生产环境配置注释 SQLite 配置并预留 MySQL 配置位置 - 修改前端笔记编辑器保存逻辑,完善笔记更新功能 - 替换 SQLite 驱动为 MySQL 连接器依赖 - 添加 commons-codec 依赖用于 SHA256 计算功能
This commit is contained in:
@@ -71,11 +71,11 @@
|
|||||||
<groupId>org.springframework.boot</groupId>
|
<groupId>org.springframework.boot</groupId>
|
||||||
<artifactId>spring-boot-starter-aop</artifactId>
|
<artifactId>spring-boot-starter-aop</artifactId>
|
||||||
</dependency>
|
</dependency>
|
||||||
<!-- sqlite -->
|
<!-- MySQL Driver -->
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.xerial</groupId>
|
<groupId>com.mysql</groupId>
|
||||||
<artifactId>sqlite-jdbc</artifactId>
|
<artifactId>mysql-connector-j</artifactId>
|
||||||
<version>3.36.0.3</version>
|
<scope>runtime</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>cn.hutool</groupId>
|
<groupId>cn.hutool</groupId>
|
||||||
@@ -110,6 +110,7 @@
|
|||||||
<!-- 密码加密-->
|
<!-- 密码加密-->
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<!-- SHA256计算工具 -->
|
<!-- SHA256计算工具 -->
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>commons-codec</groupId>
|
<groupId>commons-codec</groupId>
|
||||||
|
|||||||
@@ -1,18 +1,31 @@
|
|||||||
spring:
|
spring:
|
||||||
datasource:
|
datasource:
|
||||||
driver-class-name: org.sqlite.JDBC
|
# driver-class-name: org.sqlite.JDBC
|
||||||
url: jdbc:sqlite:C:\it\houtaigunli\biji\mydatabase.db
|
# url: jdbc:sqlite:C:\it\houtaigunli\biji\mydatabase.db
|
||||||
|
# jpa:
|
||||||
|
# hibernate:
|
||||||
|
# ddl-auto: none
|
||||||
|
# show-sql: true
|
||||||
|
# properties:
|
||||||
|
# hibernate:
|
||||||
|
# format_sql: true
|
||||||
|
# dialect: org.hibernate.dialect.SQLiteDialect
|
||||||
|
#
|
||||||
|
|
||||||
|
driver-class-name: com.mysql.cj.jdbc.Driver
|
||||||
|
url: jdbc:mysql://panel-jp.998521.xyz:37857/biji_db?useSSL=false&serverTimezone=UTC&characterEncoding=utf8
|
||||||
|
username: root
|
||||||
|
password: Ll@12331100
|
||||||
jpa:
|
jpa:
|
||||||
hibernate:
|
hibernate:
|
||||||
ddl-auto: none
|
ddl-auto: update
|
||||||
show-sql: true
|
show-sql: true
|
||||||
properties:
|
properties:
|
||||||
hibernate:
|
hibernate:
|
||||||
format_sql: true
|
format_sql: true
|
||||||
dialect: org.hibernate.dialect.SQLiteDialect
|
dialect: org.hibernate.dialect.MySQLDialect
|
||||||
|
|
||||||
|
# MyBatis-Plus配置
|
||||||
# MyBatis-Plus??
|
|
||||||
mybatis-plus:
|
mybatis-plus:
|
||||||
mapper-locations: classpath:mapper/*.xml
|
mapper-locations: classpath:mapper/*.xml
|
||||||
configuration:
|
configuration:
|
||||||
|
|||||||
@@ -1,15 +1,17 @@
|
|||||||
spring:
|
spring:
|
||||||
datasource:
|
# datasource:
|
||||||
driver-class-name: org.sqlite.JDBC
|
# driver-class-name: org.sqlite.JDBC
|
||||||
url: jdbc:sqlite:/data/mydatabase.db
|
# url: jdbc:sqlite:/data/mydatabase.db
|
||||||
jpa:
|
# jpa:
|
||||||
hibernate:
|
# hibernate:
|
||||||
ddl-auto: none
|
# ddl-auto: none
|
||||||
show-sql: false
|
# show-sql: false
|
||||||
properties:
|
# properties:
|
||||||
hibernate:
|
# hibernate:
|
||||||
format_sql: false
|
# format_sql: false
|
||||||
dialect: org.hibernate.dialect.SQLiteDialect
|
# dialect: org.hibernate.dialect.SQLiteDialect
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -117,6 +117,19 @@ onBeforeUnmount(() => {
|
|||||||
if (vditor.value) {
|
if (vditor.value) {
|
||||||
vditor.value.destroy();
|
vditor.value.destroy();
|
||||||
}
|
}
|
||||||
|
if (bijiId.value){
|
||||||
|
// 发送完整的笔记对象,确保包含所有必要字段
|
||||||
|
updateMarkdown({
|
||||||
|
id: bijiId.value,
|
||||||
|
content: vditor.value.getValue(),
|
||||||
|
title: props.editData.title,
|
||||||
|
groupingId: props.editData.groupingId,
|
||||||
|
fileName: props.editData.fileName,
|
||||||
|
isPrivate: props.editData.isPrivate
|
||||||
|
});
|
||||||
|
}
|
||||||
|
// 离开页面后清空 bijiId.value 变量
|
||||||
|
bijiId.value = null;
|
||||||
});
|
});
|
||||||
|
|
||||||
watch(() => props.editData, (newVal, oldVal) => {
|
watch(() => props.editData, (newVal, oldVal) => {
|
||||||
|
|||||||
BIN
mydatabase.db
BIN
mydatabase.db
Binary file not shown.
183
sql/all.sql
Normal file
183
sql/all.sql
Normal file
@@ -0,0 +1,183 @@
|
|||||||
|
/*
|
||||||
|
Navicat Premium Dump SQL
|
||||||
|
|
||||||
|
Source Server : biji数据库
|
||||||
|
Source Server Type : SQLite
|
||||||
|
Source Server Version : 3045000 (3.45.0)
|
||||||
|
Source Schema : main
|
||||||
|
|
||||||
|
Target Server Type : SQLite
|
||||||
|
Target Server Version : 3045000 (3.45.0)
|
||||||
|
File Encoding : 65001
|
||||||
|
|
||||||
|
Date: 06/01/2026 20:48:23
|
||||||
|
*/
|
||||||
|
|
||||||
|
PRAGMA foreign_keys = false;
|
||||||
|
|
||||||
|
-- ----------------------------
|
||||||
|
-- Table structure for grouping
|
||||||
|
-- ----------------------------
|
||||||
|
DROP TABLE IF EXISTS "grouping";
|
||||||
|
CREATE TABLE "grouping" (
|
||||||
|
"id" INTEGER NOT NULL DEFAULT 0,
|
||||||
|
"grouping" TEXT NOT NULL,
|
||||||
|
"parentId" INTEGER,
|
||||||
|
"is_deleted" INTEGER DEFAULT 0,
|
||||||
|
"deleted_at" DATETIME,
|
||||||
|
"deleted_by" INTEGER,
|
||||||
|
PRIMARY KEY ("id")
|
||||||
|
);
|
||||||
|
|
||||||
|
PRAGMA foreign_keys = true;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
PRAGMA foreign_keys = false;
|
||||||
|
|
||||||
|
-- ----------------------------
|
||||||
|
-- Table structure for image
|
||||||
|
-- ----------------------------
|
||||||
|
DROP TABLE IF EXISTS "image";
|
||||||
|
CREATE TABLE "image" (
|
||||||
|
"id" INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||||
|
"markdown_id" INTEGER,
|
||||||
|
"original_name" TEXT NOT NULL,
|
||||||
|
"stored_name" TEXT NOT NULL,
|
||||||
|
"url" TEXT NOT NULL,
|
||||||
|
"size" INTEGER NOT NULL,
|
||||||
|
"content_type" TEXT NOT NULL,
|
||||||
|
"created_at" DATETIME DEFAULT CURRENT_TIMESTAMP,
|
||||||
|
UNIQUE ("stored_name" ASC)
|
||||||
|
);
|
||||||
|
|
||||||
|
-- ----------------------------
|
||||||
|
-- Auto increment value for image
|
||||||
|
-- ----------------------------
|
||||||
|
UPDATE "sqlite_sequence" SET seq = 25 WHERE name = 'image';
|
||||||
|
|
||||||
|
PRAGMA foreign_keys = true;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
PRAGMA foreign_keys = false;
|
||||||
|
|
||||||
|
-- ----------------------------
|
||||||
|
-- Table structure for image_name
|
||||||
|
-- ----------------------------
|
||||||
|
DROP TABLE IF EXISTS "image_name";
|
||||||
|
CREATE TABLE "image_name" (
|
||||||
|
"id" INTEGER NOT NULL,
|
||||||
|
"markdown_id" INTEGER NOT NULL,
|
||||||
|
"file_name" text NOT NULL,
|
||||||
|
PRIMARY KEY ("id")
|
||||||
|
);
|
||||||
|
|
||||||
|
PRAGMA foreign_keys = true;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
PRAGMA foreign_keys = false;
|
||||||
|
|
||||||
|
-- ----------------------------
|
||||||
|
-- Table structure for markdown_file
|
||||||
|
-- ----------------------------
|
||||||
|
DROP TABLE IF EXISTS "markdown_file";
|
||||||
|
CREATE TABLE "markdown_file" (
|
||||||
|
"id" INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
|
||||||
|
"grouping_id" integer NOT NULL DEFAULT 1,
|
||||||
|
"title" TEXT NOT NULL,
|
||||||
|
"file_name" TEXT NOT NULL,
|
||||||
|
"content" TEXT NOT NULL,
|
||||||
|
"created_at" datetime DEFAULT CURRENT_TIMESTAMP,
|
||||||
|
"updated_at" datetime DEFAULT CURRENT_TIMESTAMP,
|
||||||
|
"is_deleted" INTEGER DEFAULT 0,
|
||||||
|
"deleted_at" DATETIME,
|
||||||
|
"deleted_by" INTEGER,
|
||||||
|
"is_private" integer DEFAULT 0
|
||||||
|
);
|
||||||
|
|
||||||
|
-- ----------------------------
|
||||||
|
-- Auto increment value for markdown_file
|
||||||
|
-- ----------------------------
|
||||||
|
|
||||||
|
PRAGMA foreign_keys = true;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
PRAGMA foreign_keys = false;
|
||||||
|
|
||||||
|
-- ----------------------------
|
||||||
|
-- Table structure for registration_codes
|
||||||
|
-- ----------------------------
|
||||||
|
DROP TABLE IF EXISTS "registration_codes";
|
||||||
|
CREATE TABLE "registration_codes" (
|
||||||
|
"id" integer NOT NULL PRIMARY KEY AUTOINCREMENT,
|
||||||
|
"code" TEXT NOT NULL,
|
||||||
|
"expiry_time" TEXT NOT NULL,
|
||||||
|
"created_by" TEXT,
|
||||||
|
"created_at" TEXT DEFAULT (datetime('now','localtime'))
|
||||||
|
);
|
||||||
|
|
||||||
|
-- ----------------------------
|
||||||
|
-- Auto increment value for registration_codes
|
||||||
|
-- ----------------------------
|
||||||
|
UPDATE "sqlite_sequence" SET seq = 2 WHERE name = 'registration_codes';
|
||||||
|
|
||||||
|
-- ----------------------------
|
||||||
|
-- Indexes structure for table registration_codes
|
||||||
|
-- ----------------------------
|
||||||
|
CREATE UNIQUE INDEX "uk_code"
|
||||||
|
ON "registration_codes" (
|
||||||
|
"code" ASC
|
||||||
|
);
|
||||||
|
|
||||||
|
PRAGMA foreign_keys = true;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
PRAGMA foreign_keys = false;
|
||||||
|
|
||||||
|
-- ----------------------------
|
||||||
|
-- Table structure for system_settings
|
||||||
|
-- ----------------------------
|
||||||
|
DROP TABLE IF EXISTS "system_settings";
|
||||||
|
CREATE TABLE "system_settings" (
|
||||||
|
"setting_key" TEXT NOT NULL,
|
||||||
|
"setting_value" TEXT,
|
||||||
|
"description" TEXT,
|
||||||
|
PRIMARY KEY ("setting_key")
|
||||||
|
);
|
||||||
|
|
||||||
|
PRAGMA foreign_keys = true;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
PRAGMA foreign_keys = false;
|
||||||
|
|
||||||
|
-- ----------------------------
|
||||||
|
-- Table structure for user
|
||||||
|
-- ----------------------------
|
||||||
|
DROP TABLE IF EXISTS "user";
|
||||||
|
CREATE TABLE "user" (
|
||||||
|
"id" INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||||
|
"username" TEXT NOT NULL,
|
||||||
|
"password" TEXT NOT NULL,
|
||||||
|
"email" TEXT,
|
||||||
|
"created_at" DATETIME DEFAULT CURRENT_TIMESTAMP,
|
||||||
|
"updated_at" DATETIME DEFAULT CURRENT_TIMESTAMP,
|
||||||
|
"token" TEXT,
|
||||||
|
"token_enddata" DATETIME,
|
||||||
|
UNIQUE ("username" ASC)
|
||||||
|
);
|
||||||
|
|
||||||
|
-- ----------------------------
|
||||||
|
-- Auto increment value for user
|
||||||
|
-- ----------------------------
|
||||||
|
UPDATE "sqlite_sequence" SET seq = 5 WHERE name = 'user';
|
||||||
|
|
||||||
|
PRAGMA foreign_keys = true;
|
||||||
95
sql/mysql/all.sql
Normal file
95
sql/mysql/all.sql
Normal file
@@ -0,0 +1,95 @@
|
|||||||
|
-- MySQL 5.7.44 建表脚本(由 SQLite 转换)
|
||||||
|
-- 统一字符集与引擎
|
||||||
|
SET NAMES utf8mb4;
|
||||||
|
SET FOREIGN_KEY_CHECKS = 0;
|
||||||
|
|
||||||
|
-- 1. 分组表
|
||||||
|
DROP TABLE IF EXISTS `grouping`;
|
||||||
|
CREATE TABLE `grouping` (
|
||||||
|
`id` bigintBIGINT(20) NOT NULL AUTO_INCREMENT,
|
||||||
|
`grouping` VARCHAR(255) NOT NULL,
|
||||||
|
`parentId` BIGINT(20) DEFAULT NULL,
|
||||||
|
`is_deleted` TINYINT(1) DEFAULT 0,
|
||||||
|
`deleted_at` DATETIME DEFAULT NULL,
|
||||||
|
`deleted_by` BIGINT(20) DEFAULT NULL,
|
||||||
|
PRIMARY KEY (`id`)
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
||||||
|
|
||||||
|
-- 2. 图片表
|
||||||
|
DROP TABLE IF EXISTS `image`;
|
||||||
|
CREATE TABLE `image` (
|
||||||
|
`id` BIGINT(20) NOT NULL AUTO_INCREMENT,
|
||||||
|
`markdown_id` BIGINT(20) DEFAULT NULL,
|
||||||
|
`original_name` VARCHAR(255) NOT NULL,
|
||||||
|
`stored_name` VARCHAR(255) NOT NULL,
|
||||||
|
`url` VARCHAR(500) NOT NULL,
|
||||||
|
`size` BIGINT NOT NULL,
|
||||||
|
`content_type` VARCHAR(100) NOT NULL,
|
||||||
|
`created_at` DATETIME DEFAULT CURRENT_TIMESTAMP,
|
||||||
|
PRIMARY KEY (`id`),
|
||||||
|
UNIQUE KEY `uk_stored_name` (`stored_name`)
|
||||||
|
) ENGINE=InnoDB AUTO_INCREMENT=26 DEFAULT CHARSET=utf8mb4;
|
||||||
|
|
||||||
|
-- 3. 图片名称映射表
|
||||||
|
DROP TABLE IF EXISTS `image_name`;
|
||||||
|
CREATE TABLE `image_name` (
|
||||||
|
`id` BIGINT(20) NOT NULL AUTO_INCREMENT,
|
||||||
|
`markdown_id` BIGINT(20) NOT NULL,
|
||||||
|
`file_name` TEXT NOT NULL,
|
||||||
|
PRIMARY KEY (`id`)
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
||||||
|
|
||||||
|
-- 4. Markdown 文件表
|
||||||
|
DROP TABLE IF EXISTS `markdown_file`;
|
||||||
|
CREATE TABLE `markdown_file` (
|
||||||
|
`id` BIGINT(20) NOT NULL AUTO_INCREMENT,
|
||||||
|
`grouping_id` BIGINT(20) NOT NULL DEFAULT 1,
|
||||||
|
`title` VARCHAR(255) NOT NULL,
|
||||||
|
`file_name` VARCHAR(255) NOT NULL,
|
||||||
|
`content` LONGTEXT NOT NULL,
|
||||||
|
`created_at` DATETIME DEFAULT CURRENT_TIMESTAMP,
|
||||||
|
`updated_at` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||||
|
`is_deleted` TINYINT(1) DEFAULT 0,
|
||||||
|
`deleted_at` DATETIME DEFAULT NULL,
|
||||||
|
`deleted_by` BIGINT(20) DEFAULT NULL,
|
||||||
|
`is_private` TINYINT(1) DEFAULT 0,
|
||||||
|
PRIMARY KEY (`id`)
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
||||||
|
|
||||||
|
-- 5. 注册邀请码表
|
||||||
|
DROP TABLE IF EXISTS `registration_codes`;
|
||||||
|
CREATE TABLE `registration_codes` (
|
||||||
|
`id` BIGINT(20) NOT NULL AUTO_INCREMENT,
|
||||||
|
`code` VARCHAR(255) NOT NULL,
|
||||||
|
`expiry_time` DATETIME NOT NULL,
|
||||||
|
`created_by` VARCHAR(100) DEFAULT NULL,
|
||||||
|
`created_at` DATETIME DEFAULT CURRENT_TIMESTAMP,
|
||||||
|
PRIMARY KEY (`id`),
|
||||||
|
UNIQUE KEY `uk_code` (`code`)
|
||||||
|
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4;
|
||||||
|
|
||||||
|
-- 6. 系统设置表
|
||||||
|
DROP TABLE IF EXISTS `system_settings`;
|
||||||
|
CREATE TABLE `system_settings` (
|
||||||
|
`setting_key` VARCHAR(100) NOT NULL,
|
||||||
|
`setting_value` TEXT,
|
||||||
|
`description` TEXT,
|
||||||
|
PRIMARY KEY (`setting_key`)
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
||||||
|
|
||||||
|
-- 7. 用户表
|
||||||
|
DROP TABLE IF EXISTS `user`;
|
||||||
|
CREATE TABLE `user` (
|
||||||
|
`id` BIGINT(20) NOT NULL AUTO_INCREMENT,
|
||||||
|
`username` VARCHAR(50) NOT NULL,
|
||||||
|
`password` VARCHAR(255) NOT NULL,
|
||||||
|
`email` VARCHAR(100) DEFAULT NULL,
|
||||||
|
`created_at` DATETIME DEFAULT CURRENT_TIMESTAMP,
|
||||||
|
`updated_at` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||||
|
`token` VARCHAR(255) DEFAULT NULL,
|
||||||
|
`token_enddata` DATETIME DEFAULT NULL,
|
||||||
|
PRIMARY KEY (`id`),
|
||||||
|
UNIQUE KEY `uk_username` (`username`)
|
||||||
|
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8mb4;
|
||||||
|
|
||||||
|
SET FOREIGN_KEY_CHECKS = 1;
|
||||||
Reference in New Issue
Block a user