# DorisLibX **Repository Path**: sleep1223/DorisLibX ## Basic Information - **Project Name**: DorisLibX - **Description**: 基于Doris分布式列存的高性能图书馆索引系统 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-04-22 - **Last Updated**: 2025-07-11 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # DorisLibX - 图书索引系统 ## 项目概述 DorisLibX是一个基于Spring Boot + MyBatis Plus + Vue.js的图书索引系统,支持多数据源配置,主要用于图书信息的存储、检索和管理。系统采用前后端分离架构,后端使用Spring Boot框架,前端使用Vue.js + Naive UI组件库。 ## 技术栈 ### 后端技术 - **Spring Boot 3.2.3** - 主框架 - **MyBatis Plus 3.5.5** - ORM框架 - **MySQL Connector** - MySQL数据库连接 - **H2 Database** - 内存数据库(用于开发测试) - **Lombok** - 减少样板代码 - **Maven** - 项目构建工具 ### 前端技术 - **Vue.js 3.5.13** - 前端框架 - **Naive UI 2.41.0** - UI组件库 - **Vite 6.3.5** - 构建工具 - **Alova 3.2.13** - HTTP客户端 - **Vicons** - 图标库 ## 项目结构 ``` DorisLibX/ ├── src/main/java/com/example/demo/ │ ├── DemoApplication.java # 启动类 │ ├── common/ │ │ └── R.java # 统一响应结果类 │ ├── config/ │ │ ├── DataSourceConfig.java # 主数据源配置 │ │ ├── DorisRepositoryConfig.java # Doris数据源配置 │ │ └── MybatisPlusConfig.java # MyBatis Plus配置 │ ├── controller/ │ │ ├── BookController.java # 图书控制器 │ │ └── UserController.java # 用户控制器 │ ├── entity/ │ │ ├── User.java # 用户实体 │ │ └── doris/ │ │ └── Book.java # 图书实体 │ ├── mapper/ │ │ └── UserMapper.java # 用户Mapper │ ├── repository/ │ │ └── doris/ │ │ └── BookRepository.java # 图书Repository │ └── service/ │ ├── BookService.java # 图书服务接口 │ ├── UserService.java # 用户服务接口 │ └── impl/ │ ├── BookServiceImpl.java # 图书服务实现 │ └── UserServiceImpl.java # 用户服务实现 ├── src/main/resources/ │ ├── application.yml # 配置文件 │ ├── db/ │ │ ├── schema.sql # 数据库表结构 │ │ └── data.sql # 初始数据 │ └── mapper/ │ ├── UserMapper.xml # 用户Mapper XML │ └── doris/ │ └── BookMapper.xml # 图书Mapper XML ├── web/ # 前端项目 │ ├── src/ │ │ ├── App.vue # 主应用组件 │ │ ├── main.js # 入口文件 │ │ ├── components/ │ │ │ ├── BookIndex.vue # 图书索引组件 │ │ │ └── BookDetail.vue # 图书详情组件 │ │ ├── models/ │ │ │ └── Book.js # 图书模型 │ │ └── services/ │ │ └── BookService.js # 图书服务 │ ├── package.json # 前端依赖配置 │ └── vite.config.js # Vite配置 ├── pom.xml # Maven配置 └── README.md # 项目文档 ``` ## 功能特性 ### 1. 多数据源支持 - **主数据源**: H2内存数据库,用于用户信息管理 - **Doris数据源**: MySQL兼容的分析型数据库,用于图书信息存储和检索 ### 2. 图书管理功能 - **图书查询**: 根据ISBN、书名、作者、出版社等条件查询图书 - **分页搜索**: 支持多条件分页搜索 - **全文检索**: 基于Doris的全文索引功能进行高效搜索 ### 3. 用户管理功能 - **用户CRUD**: 完整的用户增删改查功能 - **条件查询**: 支持按年龄范围查询用户 ### 4. 现代化前端界面 - **响应式设计**: 适配不同设备屏幕 - **组件化开发**: 基于Vue.js组件化架构 - **美观的UI**: 使用Naive UI组件库 ## 数据库设计 ### 用户表 (user) ```sql CREATE TABLE IF NOT EXISTS "user" ( id BIGINT AUTO_INCREMENT PRIMARY KEY, username VARCHAR(50) NOT NULL, email VARCHAR(100), age INT ); ``` ### 图书表 (books) - Doris数据库 图书表包含以下字段: - `isbn`: 图书ISBN编号(主键) - `title`: 图书标题 - `author`: 作者 - `publisher`: 出版社 - `publicationDate`: 出版日期 - `placeOfPublication`: 出版地 - `size`: 图书尺寸 - `classificationNo`: 分类号 - `subject`: 主题 - `series`: 系列 - `requisitionNo`: 申请号 - `pageNo`: 页码 - `price`: 价格 - `requestNo`: 请求号 - `barcodeNo`: 条形码 - `currentLocation`: 当前位置 - `currentLocation2`: 备用位置 - `collectionStatus`: 藏书状态 - `circulationCategory`: 流通类别 ## API接口文档 ### 用户相关接口 #### 1. 获取用户列表 ```http GET /api/users ``` #### 2. 根据ID获取用户 ```http GET /api/users/{id} ``` #### 3. 创建用户 ```http POST /api/users Content-Type: application/json { "username": "张三", "email": "zhangsan@example.com", "age": 25 } ``` #### 4. 更新用户 ```http PUT /api/users/{id} Content-Type: application/json { "username": "张三", "email": "zhangsan@example.com", "age": 26 } ``` #### 5. 删除用户 ```http DELETE /api/users/{id} ``` #### 6. 按年龄范围统计用户 ```http GET /api/users/count?minAge=20&maxAge=30 ``` ### 图书相关接口 #### 1. 根据ISBN获取图书 ```http GET /api/books/{isbn} ``` #### 2. 根据书名搜索图书 ```http GET /api/books/search/title?title=计算机 ``` #### 3. 根据作者搜索图书 ```http GET /api/books/search/author?author=张三 ``` #### 4. 多条件分页搜索图书 ```http GET /api/books/search?page=1&size=10&title=计算机&author=张三&publisher=清华大学出版社 ``` #### 5. 全文搜索图书 ```http GET /api/books/search/fulltext?keyword=计算机&page=1&size=10 ``` ## 配置说明 ### 数据源配置 (application.yml) ```yaml spring: datasource: # 主数据源配置 (H2) primary: type: com.zaxxer.hikari.HikariDataSource driver-class-name: org.h2.Driver jdbc-url: jdbc:h2:mem:testdb;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE username: sa password: # Doris数据源配置 doris: type: com.zaxxer.hikari.HikariDataSource driver-class-name: com.mysql.cj.jdbc.Driver jdbc-url: jdbc:mysql://106.55.199.219:39030/lib?useUnicode=true&characterEncoding=utf-8&useSSL=false username: admin password: hsyqweQWE123_ ``` ### MyBatis Plus配置 ```yaml mybatis-plus: configuration: map-underscore-to-camel-case: true log-impl: org.apache.ibatis.logging.stdout.StdOutImpl global-config: db-config: id-type: auto mapper-locations: classpath:mapper/*.xml ``` ## 部署说明 ### 1. 环境要求 - **Java**: JDK 17+ - **Maven**: 3.6+ - **Node.js**: 16+ - **数据库**: MySQL 8.0+ (或Doris) ### 2. 后端部署 #### 2.1 克隆项目 ```bash git clone cd DorisLibX ``` #### 2.2 配置数据库 1. 修改 `src/main/resources/application.yml` 中的数据库连接信息 2. 确保Doris数据库已启动并可访问 #### 2.3 构建项目 ```bash mvn clean compile ``` #### 2.4 运行项目 ```bash mvn spring-boot:run ``` 或者打包后运行: ```bash mvn clean package java -jar target/demo-0.0.1-SNAPSHOT.jar ``` 后端服务将在 `http://localhost:8080` 启动 ### 3. 前端部署 #### 3.1 进入前端目录 ```bash cd web ``` #### 3.2 安装依赖 ```bash npm install # 或使用pnpm pnpm install ``` #### 3.3 开发模式运行 ```bash npm run dev # 或使用pnpm pnpm dev ``` #### 3.4 生产构建 ```bash npm run build # 或使用pnpm pnpm build ``` 前端服务将在 `http://localhost:5173` 启动 ### 4. 生产环境部署 #### 4.1 后端生产部署 ```bash # 打包应用 mvn clean package -Dmaven.test.skip=true # 使用Docker部署(可选) # 创建Dockerfile FROM openjdk:17-jre-slim COPY target/demo-0.0.1-SNAPSHOT.jar app.jar EXPOSE 8080 ENTRYPOINT ["java", "-jar", "/app.jar"] # 构建镜像 docker build -t dorislibx-backend . # 运行容器 docker run -p 8080:8080 dorislibx-backend ``` #### 4.2 前端生产部署 ```bash # 构建生产版本 cd web npm run build # 使用Nginx部署 # 配置nginx.conf server { listen 80; server_name your-domain.com; location / { root /path/to/web/dist; index index.html; try_files $uri $uri/ /index.html; } location /api/ { proxy_pass http://localhost:8080; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } } ``` ### 5. 数据库初始化 #### 5.1 H2数据库初始化 H2数据库会在应用启动时自动执行 `schema.sql` 和 `data.sql` 脚本进行初始化。 #### 5.2 Doris数据库初始化 需要手动在Doris中创建图书表和相关索引: ```sql -- 创建图书表 CREATE TABLE books ( isbn VARCHAR(50) PRIMARY KEY, title VARCHAR(500), author VARCHAR(200), publisher VARCHAR(200), publicationDate DATE, placeOfPublication VARCHAR(100), size VARCHAR(50), classificationNo VARCHAR(100), subject VARCHAR(200), series VARCHAR(200), requisitionNo VARCHAR(100), pageNo INT, price DECIMAL(10,2), requestNo VARCHAR(100), barcodeNo VARCHAR(100), currentLocation VARCHAR(200), currentLocation2 VARCHAR(200), collectionStatus VARCHAR(50), circulationCategory VARCHAR(50) ); -- 创建全文索引 CREATE INDEX idx_book_title ON books(title) USING INVERTED; ``` ## 开发指南 ### 1. 新增API接口 1. 在对应的Controller中添加新的映射方法 2. 在Service接口中定义业务方法 3. 在ServiceImpl中实现业务逻辑 4. 如需要,在Repository中添加数据访问方法 ### 2. 新增前端页面 1. 在 `web/src/components/` 目录下创建新的Vue组件 2. 在 `web/src/services/` 目录下添加API调用方法 3. 在主应用中引入并使用新组件 ### 3. 数据库迁移 1. 修改 `schema.sql` 文件添加新表结构 2. 修改 `data.sql` 文件添加初始数据 3. 相应地修改实体类和Mapper文件 ## 注意事项 1. **数据库连接**: 确保Doris数据库服务正常运行且网络可达 2. **跨域问题**: 开发环境已配置代理,生产环境需要配置Nginx或在后端添加CORS配置 3. **日志配置**: 生产环境建议调整日志级别和输出位置 4. **性能优化**: 对于大数据量查询,建议添加适当的索引和缓存机制 ## 常见问题 ### Q: 启动时连接不上Doris数据库怎么办? A: 检查网络连接、数据库服务状态、连接参数是否正确。 ### Q: 前端无法访问后端API怎么办? A: 检查后端服务是否正常启动,端口是否冲突,跨域配置是否正确。 ### Q: 如何添加新的搜索条件? A: 在BookRepository中添加新的查询方法,在BookService中定义接口,在BookController中添加新的映射。