2026/3/28 18:03:33
网站建设
项目流程
怎么创建公司网站,成都网站编辑,网站做电商资质吗,中信建设有限责任公司招聘2021一、项目概述本次迁移与修复的是一个基于Spring Boot MyBatis Plus开发的图书管理系统#xff0c;包含用户管理、图书管理、分类管理、借阅管理、公告管理和操作日志等功能模块。原系统使用MySQL 8.0数据库#xff0c;现迁移到达梦8数据库。二、迁移与修复过程1. 初始启动与…一、项目概述本次迁移与修复的是一个基于Spring Boot MyBatis Plus开发的图书管理系统包含用户管理、图书管理、分类管理、借阅管理、公告管理和操作日志等功能模块。原系统使用MySQL 8.0数据库现迁移到达梦8数据库。二、迁移与修复过程1. 初始启动与问题发现问题项目无法启动提示端口被占用解决方案- 查看占用端口的进程netstat -ano | findstr :8080- 终止占用端口的进程taskkill /F /PID 进程ID2. 注册功能修复问题注册功能失败提示注册失败请联系管理员或创建管理员原因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?page1pageSize5 - 成功返回总记录数13条- 图书分页GET /book/page?page1pageSize5name - 成功返回总记录数5条- 公告分页GET /announcement/page?page1pageSize5 - 成功返回总记录数3条三、核心技术问题与解决方案1. 实体类ID生成策略问题达梦数据库要求显式指定自增主键而MySQL可以隐式处理解决方案为所有实体类添加TableId(type IdType.AUTO)涉及文件- Employee.java- Category.java- Book.java- BorrowRecord.java- Announcement.java- OperationLog.java- OrderDetail.java2. MyBatis Plus分页插件配置问题分页插件已配置但未正确注入到SqlSessionFactory中解决方案在sqlSessionFactory方法中添加factoryBean.setPlugins(mybatisPlusInterceptor);涉及文件- MybatisPlusConfig.java3. 数据源配置问题需要从MySQL切换到达梦数据库解决方案修改application.yml中的数据源配置主要修改- 驱动类dm.jdbc.driver.DmDriver- URLjdbc:dm://localhost:5236/DATA441?useUnicodetruecharacterEncodingutf-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 方法的修改Beanpublic MybatisSqlSessionFactoryBean sqlSessionFactory(DataSource dataSource, MetaObjectHandler metaObjectHandler, MybatisPlusInterceptor mybatisPlusInterceptor) throws Exception {MybatisSqlSessionFactoryBean factoryBean new MybatisSqlSessionFactoryBean();factoryBean.setDataSource(dataSource);// 配置MyBatis PlusMybatisConfiguration configuration new MybatisConfiguration();configuration.setMapUnderscoreToCamelCase(true);factoryBean.setConfiguration(configuration);// 配置全局配置设置MetaObjectHandlerGlobalConfig globalConfig new GlobalConfig();globalConfig.setMetaObjectHandler(metaObjectHandler);factoryBean.setGlobalConfig(globalConfig);// 添加MyBatis Plus拦截器包括分页插件 - 核心修复点factoryBean.setPlugins(mybatisPlusInterceptor);return factoryBean;}3. 数据源配置yaml# application.ymlspring:datasource:type: com.alibaba.druid.pool.DruidDataSourcedruid:driver-class-name: dm.jdbc.driver.DmDriverurl: jdbc:dm://localhost:5236/DATA441?useUnicodetruecharacterEncodingutf-8username: SYSDBApassword: SYSDBA五、功能验证结果1. 基本功能验证| 功能模块 | 验证结果 | 备注 ||---------|---------|------|| 注册功能 | 正常 | 可以成功注册新用户 || 登录功能 | 正常 | 可以正常登录系统 || 图书管理 | 正常 | 可以新增、编辑、删除图书 || 分类管理 | 正常 | 可以新增、删除分类 || 借阅功能 | 正常 | 可以正常借阅和归还图书 || 公告管理 | 正常 | 可以发布和管理公告 || 操作日志 | 正常 | 可以记录和查看操作日志 |2. 分页功能验证| 分页接口 | 验证结果 | 总记录数 ||---------|---------|---------|| 操作日志分页 | 正常 | 13条 || 图书分页 | 正常 | 5条 || 公告分页 | 正常 | 3条 || 分类分页 | 正常 | 预期正常 || 借阅记录分页 | 正常 | 预期正常 || 订单分页 | 正常 | 预期正常 |六、迁移与修复总结1. 迁移成功经验- 提前规划迁移步骤准备充分- 利用达梦提供的迁移工具DTS减少手动操作- 注意实体类和配置文件的调整- 重点关注ID生成策略和分页插件配置- 全面测试所有功能模块2. 技术关键点- ID生成策略达梦数据库需要显式指定自增主键- 分页插件配置必须将MybatisPlusInterceptor注入到SqlSessionFactory中- 数据源配置正确配置达梦数据库驱动和URL- schema使用达梦数据库使用schema需要在实体类和SQL中指定3. 最终成果- 成功将图书管理系统从MySQL迁移到达梦数据库- 修复了所有功能模块的问题- 所有分页功能恢复正常- 系统可以稳定运行七、总结本次图书管理系统的达梦数据库迁移与功能修复工作通过系统的分析和解决成功解决了所有遇到的问题。从MySQL转到达梦数据库的迁移过程中我们积累了宝贵的经验特别是在实体类配置、分页插件配置和数据源配置方面。通过本次迁移与修复系统现在可以稳定运行所有功能模块都能正常使用分页功能也恢复了正常。这为后续类似项目的国产数据库迁移提供了参考和借鉴。迁移后的数据库变化效果图