# 图书阅读系统后端项目 ## 项目结构 ``` book/ ├── src/ │ └── main/ │ ├── java/ │ │ └── com/yu/book/ │ │ ├── BookApplication.java # 启动类 │ │ ├── controller/ # 控制层 │ │ │ ├── UserController.java # 用户控制器 │ │ │ └── BookController.java # 书籍控制器 │ │ ├── service/ # 服务层 │ │ │ ├── UserService.java # 用户服务 │ │ │ └── BookService.java # 书籍服务 │ │ ├── mapper/ # 数据访问层 │ │ │ ├── UserMapper.java # 用户Mapper接口 │ │ │ ├── BookMapper.java # 书籍Mapper接口 │ │ │ └── CategoryMapper.java # 分类Mapper接口 │ │ ├── domain/ # 实体类(领域模型) │ │ │ ├── User.java # 用户实体 │ │ │ ├── Book.java # 书籍实体 │ │ │ └── Category.java # 分类实体 │ │ ├── dto/ # 数据传输对象 │ │ │ ├── LoginDTO.java # 登录DTO │ │ │ ├── RegisterDTO.java # 注册DTO │ │ │ └── BookDTO.java # 书籍DTO │ │ ├── vo/ # 视图对象 │ │ │ ├── UserVO.java # 用户VO │ │ │ ├── BookVO.java # 书籍VO │ │ │ └── LoginVO.java # 登录VO │ │ ├── common/ # 通用类 │ │ │ ├── Result.java # 统一响应结果 │ │ │ └── PageResult.java # 分页结果 │ │ ├── util/ # 工具类 │ │ │ └── PasswordUtil.java # 密码工具类 │ │ └── exception/ # 异常处理 │ │ └── GlobalExceptionHandler.java # 全局异常处理器 │ └── resources/ │ ├── application.properties # 配置文件 │ ├── mapper/ # MyBatis XML映射文件 │ │ ├── UserMapper.xml │ │ ├── BookMapper.xml │ │ └── CategoryMapper.xml │ └── db/ │ └── schema.sql # 数据库初始化脚本 ├── pom.xml # Maven配置文件 ├── API_DOCUMENTATION.md # API接口文档 └── README.md # 项目说明文档 ``` ## 技术栈 - **Spring Boot**: 2.7.18 - **MyBatis**: 2.3.1 - **MySQL**: 5.7+ / 8.0+ - **Java**: 8 - **Lombok**: 简化代码 ## 功能特性 ### 1. 用户管理 - ✅ 用户注册 - ✅ 用户登录 - ✅ 用户信息查询 ### 2. 书籍管理 - ✅ 分页查询书籍(支持关键词搜索、分类筛选、状态筛选) - ✅ 根据ID查询书籍详情 - ✅ 创建书籍 - ✅ 更新书籍 - ✅ 删除书籍 - ✅ 批量删除书籍 ## 快速开始 ### 1. 环境要求 - JDK 8+ - Maven 3.6+ - MySQL 5.7+ / 8.0+ ### 2. 数据库配置 1. 创建MySQL数据库,执行 `src/main/resources/db/schema.sql` 文件 2. 修改 `src/main/resources/application.properties` 中的数据库连接信息: ```properties spring.datasource.url=jdbc:mysql://localhost:3306/books_db?... spring.datasource.username=root spring.datasource.password=root ``` ### 3. 启动项目 ```bash # 使用Maven启动 mvn spring-boot:run # 或者打包后运行 mvn clean package java -jar target/book-0.0.1-SNAPSHOT.jar ``` ### 4. 访问接口 项目启动后,访问地址:`http://localhost:8080` ## API接口 详细API文档请参考 [API_DOCUMENTATION.md](./API_DOCUMENTATION.md) ### 主要接口 - **用户注册**: `POST /api/user/register` - **用户登录**: `POST /api/user/login` - **查询用户**: `GET /api/user/{id}` - **分页查询书籍**: `GET /api/book/list` - **查询书籍详情**: `GET /api/book/{id}` - **创建书籍**: `POST /api/book` - **更新书籍**: `PUT /api/book/{id}` - **删除书籍**: `DELETE /api/book/{id}` - **批量删除书籍**: `DELETE /api/book/batch` ## 包结构说明 ### controller(控制层) 处理HTTP请求,调用Service层处理业务逻辑,返回响应结果。 ### service(服务层) 实现业务逻辑,调用Mapper层进行数据操作。 ### mapper(数据访问层) MyBatis的Mapper接口,定义数据操作方法。 ### domain(领域模型) 实体类,对应数据库表结构。 ### dto(数据传输对象) 用于接收前端请求参数的对象。 ### vo(视图对象) 用于返回给前端的数据对象。 ### common(通用类) 统一的响应结果封装类。 ### util(工具类) 通用工具方法。 ### exception(异常处理) 全局异常处理器。 ## 开发规范 1. **包命名规范**: 所有包名使用小写字母,多个单词使用点分隔 2. **类命名规范**: 使用大驼峰命名(PascalCase) 3. **方法命名规范**: 使用小驼峰命名(camelCase) 4. **注释规范**: 所有类和方法都应有JavaDoc注释 5. **异常处理**: 使用全局异常处理器统一处理异常 6. **响应格式**: 统一使用Result类封装响应结果 ## 注意事项 1. 密码加密使用MD5(简单示例),生产环境建议使用BCrypt 2. Token目前是模拟实现,生产环境建议使用JWT 3. 已配置跨域支持,允许所有来源的请求 4. 数据库字段使用下划线命名,Java实体使用驼峰命名,MyBatis会自动映射 ## 后续扩展 - [ ] JWT Token认证 - [ ] 权限管理 - [ ] 文件上传(书籍封面) - [ ] 缓存支持(Redis) - [ ] 日志记录 - [ ] 单元测试