# sqlitedemo **Repository Path**: sky365/sqlitedemo ## Basic Information - **Project Name**: sqlitedemo - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-07-22 - **Last Updated**: 2026-07-24 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 题库管理系统 (SQLite Demo) 本项目是一个基于 **Spring Boot** (后端) 和 **Vue.js + Element Plus** (前端) 开发的题库管理系统。系统使用 **SQLite** 作为数据存储,支持题目的管理、Excel 导入导出以及数据库的备份与恢复。 ## 项目结构 ``` sqlitedemo/ ├── src/main/java/cn/sky/sqlitedemo/ │ ├── Sqlite2026Application.java # 启动类 │ ├── config/ # 配置类 (Web, CORS, 拦截器) │ ├── controller/ # REST API 控制器 │ │ ├── AuthController.java # API Key 认证接口 │ │ ├── DbBackupController.java # 数据库备份接口 │ │ ├── IndexController.java # 前端页面入口 │ │ └── QuestionController.java # 题目管理接口 │ ├── entity/ # 实体类 (Question) │ ├── mapper/ # MyBatis Mapper 接口 │ ├── service/ # 业务逻辑层 │ ├── dto/ # 数据传输对象 (Excel导入导出) │ ├── listener/ # Excel 导入监听器 │ ├── intercepter/ # 安全拦截器 │ └── util/ # 工具类 (SqliteBackupUtil) ├── src/main/resources/ │ ├── static/ # 前端静态资源 (Vue页面, JS, CSS) │ └── application.yaml # 应用配置文件 ├── data/ # SQLite 数据库文件目录 ├── backup/ # 数据库备份文件目录 └── pom.xml # Maven 依赖配置 ``` ## 功能特性 1. **题目管理**: 支持单条添加、修改、删除,以及批量删除。 2. **分页查询**: 提供按章节和标题的灵活分页查询。 3. **Excel 集成**: * **导入**: 支持从 Excel 文件批量导入题目。 * **导出**: 支持将题目列表导出为 Excel 文件。 * **模板下载**: 提供 Excel 导入模板下载。 4. **数据库备份**: 提供在线接口备份 SQLite 数据库文件到指定目录。 5. **安全控制**: * **API Key 认证**: 访问 API 需要在 Header 中携带正确的 `X-API-Key`。 * **IP 白名单**: 支持配置允许访问的 IP 地址列表。 ## 技术栈 * **后端**: Java, Spring Boot, MyBatis Plus, SQLite JDBC * **前端**: Vue 3, Element Plus, Axios * **Excel 处理**: EasyExcel ## 快速开始 ### 环境要求 * JDK 1.8 或更高版本 * Maven ### 配置说明 在 `src/main/resources/application.yaml` 中配置数据库路径和密钥: ```yaml spring: datasource: url: jdbc:sqlite:./data/tiku.db # 数据库文件路径 driver-class-name: org.sqlite.JDBC custom: security: admin-api-key: your-secret-key # API 认证密钥 allow-ip-list: 127.0.0.1 # 允许访问的IP列表 server: port: 8080 ``` ### 运行项目 1. **打包**: ```bash mvn clean package ``` 2. **启动**: ```bash java -jar target/sqlitedemo.jar ``` 3. **访问**: * 管理系统界面: `http://localhost:8080/` * API 基础路径: `http://localhost:8080/api` ## API 接口文档 ### 1. 题目管理 (`/api/question`) | 方法 | 路径 | 说明 | | :--- | :--- | :--- | | GET | `/api/question/page` | 分页查询 (参数: `pageNum`, `pageSize`, `chapter`) | | GET | `/api/question/{id}` | 根据ID获取题目详情 | | POST | `/api/question` | 新增题目 | | PUT | `/api/question` | 更新题目 | | DELETE | `/api/question/{id}` | 删除单条题目 | | POST | `/api/question/batch` | 批量删除题目 | | POST | `/api/question/batch/save` | 批量保存(去重) | | POST | `/api/question/excel/import` | **Excel 导入** (`multipart/form-data`) | | GET | `/api/question/excel/export` | **Excel 导出** | | GET | `/api/question/excel/template` | 下载 Excel 导入模板 | ### 2. 系统操作 (`/api`) | 方法 | 路径 | 说明 | | :--- | :--- | :--- | | POST | `/api/db/backup` | 备份当前数据库到 `backup/` 目录 | | POST | `/api/auth/verify` | 验证 API Key 是否有效 | ### 3. 认证机制 后端通过 `ApiSecurityInterceptor` 拦截所有 `/api/` 请求 (除 `/api/auth/verify`): * **Header**: 必须包含 `X-API-Key`。 * **IP**: 必须在 `allow-ip-list` 配置中。 ## 前端页面 项目包含三个前端页面入口,位于 `src/main/resources/static/`: * `index.html`: 默认首页。 * `index1.html`, `index3.html`: 备用或旧版页面入口。