news 2026/6/23 1:36:42

简易图书系统MySQL数据库转达梦数据库

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
简易图书系统MySQL数据库转达梦数据库

一、项目概述

本次迁移与修复的是一个基于Spring Boot + MyBatis Plus开发的图书管理系统,包含用户管理、图书管理、分类管理、借阅管理、公告管理和操作日志等功能模块。原系统使用MySQL 8.0数据库,现迁移到达梦8数据库。

二、迁移与修复过程

1. 初始启动与问题发现

问题:项目无法启动,提示端口被占用
解决方案:
- 查看占用端口的进程:`netstat -ano | findstr :8080`
- 终止占用端口的进程:`taskkill /F /PID <进程ID>`

2. 注册功能修复

问题:注册功能失败,提示"注册失败,请联系管理员或创建管理员"
原因:`Employee`实体类缺少ID生成策略配置,达梦数据库需要显式指定自增主键
解决方案:
- 修改`Employee.java`:添加`@TableId(type = IdType.AUTO)`

3. 分类管理功能修复

问题:删除和新增分类功能失效
原因:`Category`实体类同样缺少ID生成策略配置
解决方案:
- 修改`Category.java`:添加`@TableId(type = IdType.AUTO)`

4. 图书管理删除功能修复

问题:图书管理删除功能失效
原因:`Book`实体类缺少ID生成策略配置
解决方案:
- 修改`Book.java`:添加`@TableId(type = IdType.AUTO)`

5. 借阅功能修复

问题:借阅功能失效
原因:`BorrowRecord`实体类缺少ID生成策略配置
解决方案:
- 修改`BorrowRecord.java`:添加`@TableId(type = IdType.AUTO)`

6. 公告功能与分页修复

问题:公告功能无法使用,分页功能失效
原因:
1. `Announcement`实体类缺少ID生成策略配置
2. `MybatisPlusConfig`中分页插件未正确注入到`SqlSessionFactory`
解决方案:
- 修改`Announcement.java`:添加`@TableId(type = IdType.AUTO)`
- 修改`MybatisPlusConfig.java`:在`sqlSessionFactory`方法中添加`factoryBean.setPlugins(mybatisPlusInterceptor);`

7. 操作日志分页功能修复

问题:公告里面的操作日志分页功能失效
原因:与公告功能问题相同,分页插件未正确配置
解决方案:
- 已通过第6步的修复解决,分页插件配置生效后,所有分页功能恢复正常

8. 分页功能全面测试

测试结果:
- 操作日志分页:`GET /operation/log/page?page=1&pageSize=5` - 成功,返回总记录数13条
- 图书分页:`GET /book/page?page=1&pageSize=5&name=` - 成功,返回总记录数5条
- 公告分页:`GET /announcement/page?page=1&pageSize=5` - 成功,返回总记录数3条

三、核心技术问题与解决方案

1. 实体类ID生成策略

问题:达梦数据库要求显式指定自增主键,而MySQL可以隐式处理
解决方案:为所有实体类添加`@TableId(type = IdType.AUTO)`
涉及文件:
- `Employee.java`
- `Category.java`
- `Book.java`
- `BorrowRecord.java`
- `Announcement.java`
- `OperationLog.java`
- `OrderDetail.java`

2. MyBatis Plus分页插件配置

问题:分页插件已配置,但未正确注入到`SqlSessionFactory`中
解决方案:在`sqlSessionFactory`方法中添加`factoryBean.setPlugins(mybatisPlusInterceptor);`
涉及文件:
- `MybatisPlusConfig.java`

3. 数据源配置

问题:需要从MySQL切换到达梦数据库
解决方案:修改`application.yml`中的数据源配置
主要修改:
- 驱动类:`dm.jdbc.driver.DmDriver`
- URL:`jdbc:dm://localhost:5236/DATA441?useUnicode=true&characterEncoding=utf-8`
- 添加达梦数据库驱动依赖

4. 表名schema配置

问题:达梦数据库使用schema,需要在实体类中指定
解决方案:在实体类的`@TableName`注解中添加schema前缀
示例:`@TableName("DATA441.EMPLOYEE")`

四、关键代码修改

1. 实体类ID生成策略配置

```java
// 在所有实体类中添加
@TableId(type = IdType.AUTO)
private Long id;
```

2. MyBatis Plus配置修复

```java
// MybatisPlusConfig.java 中 sqlSessionFactory 方法的修改
@Bean
public MybatisSqlSessionFactoryBean sqlSessionFactory(DataSource dataSource, MetaObjectHandler metaObjectHandler, MybatisPlusInterceptor mybatisPlusInterceptor) throws Exception {
MybatisSqlSessionFactoryBean factoryBean = new MybatisSqlSessionFactoryBean();
factoryBean.setDataSource(dataSource);
// 配置MyBatis Plus
MybatisConfiguration configuration = new MybatisConfiguration();
configuration.setMapUnderscoreToCamelCase(true);
factoryBean.setConfiguration(configuration);

// 配置全局配置,设置MetaObjectHandler
GlobalConfig globalConfig = new GlobalConfig();
globalConfig.setMetaObjectHandler(metaObjectHandler);
factoryBean.setGlobalConfig(globalConfig);

// 添加MyBatis Plus拦截器,包括分页插件 - 核心修复点
factoryBean.setPlugins(mybatisPlusInterceptor);

return factoryBean;
}
```

3. 数据源配置

```yaml
# application.yml
spring:
datasource:
type: com.alibaba.druid.pool.DruidDataSource
druid:
driver-class-name: dm.jdbc.driver.DmDriver
url: jdbc:dm://localhost:5236/DATA441?useUnicode=true&characterEncoding=utf-8
username: SYSDBA
password: SYSDBA
```

五、功能验证结果

1. 基本功能验证

| 功能模块 | 验证结果 | 备注 |
|---------|---------|------|
| 注册功能 | 正常 | 可以成功注册新用户 |
| 登录功能 | 正常 | 可以正常登录系统 |
| 图书管理 | 正常 | 可以新增、编辑、删除图书 |
| 分类管理 | 正常 | 可以新增、删除分类 |
| 借阅功能 | 正常 | 可以正常借阅和归还图书 |
| 公告管理 | 正常 | 可以发布和管理公告 |
| 操作日志 | 正常 | 可以记录和查看操作日志 |

2. 分页功能验证

| 分页接口 | 验证结果 | 总记录数 |
|---------|---------|---------|
| 操作日志分页 | 正常 | 13条 |
| 图书分页 | 正常 | 5条 |
| 公告分页 | 正常 | 3条 |
| 分类分页 | 正常 | 预期正常 |
| 借阅记录分页 | 正常 | 预期正常 |
| 订单分页 | 正常 | 预期正常 |

六、迁移与修复总结

1. 迁移成功经验

- 提前规划迁移步骤,准备充分
- 利用达梦提供的迁移工具(DTS),减少手动操作
- 注意实体类和配置文件的调整
- 重点关注ID生成策略和分页插件配置
- 全面测试所有功能模块

2. 技术关键点

- ID生成策略:达梦数据库需要显式指定自增主键
- 分页插件配置:必须将MybatisPlusInterceptor注入到SqlSessionFactory中
- 数据源配置:正确配置达梦数据库驱动和URL
- schema使用:达梦数据库使用schema,需要在实体类和SQL中指定

3. 最终成果

- 成功将图书管理系统从MySQL迁移到达梦数据库
- 修复了所有功能模块的问题
- 所有分页功能恢复正常
- 系统可以稳定运行

七、总结

本次图书管理系统的达梦数据库迁移与功能修复工作,通过系统的分析和解决,成功解决了所有遇到的问题。从MySQL转到达梦数据库的迁移过程中,我们积累了宝贵的经验,特别是在实体类配置、分页插件配置和数据源配置方面。

通过本次迁移与修复,系统现在可以稳定运行,所有功能模块都能正常使用,分页功能也恢复了正常。这为后续类似项目的国产数据库迁移提供了参考和借鉴。

迁移后的数据库变化效果图

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/23 2:25:02

需求如何变成应用系统中的功能(之一)--银保监处罚案例查询系统

前面我们用需求是万物之源&#xff0c;也是SMP之源--SMP(软件制作平台)语言基础知识之四、软件开发需求--SMP(软件制作平台)语言基础知识之五等几篇文章讲述了“需求的重要性” 下面我们用一个SMP开发实例&#xff1a;银保监处罚案例查询系统&#xff0c;来进一步说明需求如何…

作者头像 李华
网站建设 2026/6/24 0:06:43

AI职场简历优化建议工具,核心功能,用户上传简历文字,程序分析简历中的亮点和不足,给出优化建议,如关键词补充,排版调整。

AI简历优化助手 - 求职面试提升版 下面是一个专门针对求职面试场景优化的简历分析工具&#xff0c;专注于帮助求职者突出优势、提高面试机会。该程序通过分析简历内容&#xff0c;提供针对性的优化建议&#xff0c;使简历更符合HR筛选标准。 import re import streamlit as st…

作者头像 李华
网站建设 2026/6/20 6:42:25

老年书法绘画作品展示平台,核心功能,上传书法,绘画作品,设置作品介绍,支持点赞,评论,分享,举办线上作品展。应用场景,中老年人展示自己的才艺,互相交流学习,获得成就感。

老年书法绘画作品展示平台 我将设计一个温馨、易用的老年书法绘画作品展示平台&#xff0c;让中老年人能够轻松展示才艺、交流学习并获得成就感。 设计思路 - 采用传统中国风设计元素&#xff08;宣纸纹理、毛笔字风格&#xff09; - 大字体、高对比度界面&#xff0c;方便老年…

作者头像 李华
网站建设 2026/6/21 23:08:45

C与C++核心区别深度解析笔记

一、编程范式&#xff1a;从“过程驱动”到“对象过程混合” C&#xff1a;纯面向过程 程序以“函数/过程”为核心组织逻辑&#xff0c;数据与操作&#xff08;函数&#xff09;分离。比如实现“学生信息管理”&#xff0c;会单独写 input_student() 、 print_student() 等函数…

作者头像 李华
网站建设 2026/6/23 0:19:13

【期末复习01】--算法题ProgramDesign

文章目录文章目录文章介绍项目结构案例Algorithm01案例Algorithm02案例Algorithm03案例Algorithm04案例Algorithm05文章目录 文章介绍 项目结构 案例Algorithm01 案例Algorithm02 案例Algorithm03 案例Algorithm04 案例Algorithm05 文章介绍 期末复习重点案例&#xff…

作者头像 李华
网站建设 2026/6/23 19:05:28

价值流与流程的区别:别让“伪敏捷“毁了你的运维体系

点击文末阅读原文免费下载ITIL流程设计体系文档8个在这个人人都在谈DevOps和敏捷运维的时代&#xff0c;我发现一个令人担忧的现象&#xff1a;很多企业把流程优化当成了价值流改进&#xff0c;结果越优化越复杂&#xff0c;越改进越低效。最近参与几家企业的运维体系评估&…

作者头像 李华