Skip to content

[WIP] feat: 支持高斯数据库以及更多国产库的兼容模式 - #26

Open
fangzhengjin wants to merge 7 commits into
aizuda:masterfrom
fangzhengjin:support-gaussdb
Open

[WIP] feat: 支持高斯数据库以及更多国产库的兼容模式#26
fangzhengjin wants to merge 7 commits into
aizuda:masterfrom
fangzhengjin:support-gaussdb

Conversation

@fangzhengjin

@fangzhengjin fangzhengjin commented Jun 9, 2025

Copy link
Copy Markdown
  • 更新 MyBatis-Plus 版本至 3.5.12
  • 移除 ALLOW_DB 列表,改为在 DbTypeEnum 中定义允许的数据库类型
  • 优化数据库类型的自动识别逻辑,增加对更多数据库类型识别的支持
  • 增加未找到识别的数据库mapper配置时,使用兼容的语法作为兜底策略
  • 高斯数据库不支持 RETURNING 语法,使用雪花 ID(向前端传输ID时,由于雪花ID长度问题会导致精度丢失,所以向页面返回ID时将Long转为String返回可以有效解决该问题)
  • 增加高斯数据库初始化SQL
  • 添加 PropertiesLauncher 启动配置(镜像中可以使用 -Dloader.path=/drivers/path/ 需要额外加载的驱动jar)

- 更新 MyBatis-Plus 版本至 3.5.12
- 移除 ALLOW_DB 列表,改为在 DbTypeEnum 中定义允许的数据库类型
- 增加对更多数据库类型的支持,包括 Oracle、PostgreSQL、MySQL 等
- 优化数据库类型的自动识别逻辑
- 在数据源模块中添加 Gauss 相关配置和映射文件
- 增加兼容数据库的兜底加载策略
- 在 SnailJobTemplateAutoConfiguration 中添加 mybatisPlusPropertiesCustomizer 方法
- 根据数据库类型设置全局配置的 ID 类型
- 针对高斯和 OpenGauss 数据库使用 ASSIGN_ID(雪花 ID)
- 其他数据库保持 AUTO 类型
- 移除各实体类中不必要的 IdType 导入和 AUTO 类型设置
@fangzhengjin fangzhengjin changed the title feat: 支持高斯数据库以及更多国产库的兼容模式 [VIP] feat: 支持高斯数据库以及更多国产库的兼容模式 Jun 9, 2025
- 这个改动可以解决在数据传输过程中 Long 类型数据(雪花ID)精度丢失的问题
- 这个改动可以解决在数据传输过程中 Long 类型数据(雪花ID)精度丢失的问题
@open-snail

open-snail commented Jun 22, 2025

Copy link
Copy Markdown
Collaborator

感谢你的PR,我review完了代码,目前没有计划在支持其他的数据库了, 这个PR可以作为一个参考,或许其他的小伙伴有类似的需求,

@fangzhengjin fangzhengjin changed the title [VIP] feat: 支持高斯数据库以及更多国产库的兼容模式 [WIP] feat: 支持高斯数据库以及更多国产库的兼容模式 Jun 22, 2025
@fangzhengjin

fangzhengjin commented Jun 22, 2025

Copy link
Copy Markdown
Author

感谢你的PR,我review完了代码,目前没有计划在支持其他的数据库了, 这个PR可以作为一个参考,或许其他的小伙伴有类似的需求,

@open-snail 其实这个 PR不只是用作支持高斯的,因为有很多国产数据库基本都是 PG,MySQL,Oracle这三种模式,所以大部分情况下只需需要支持这三种兼容语法模式就可以了,根据实际的国产数据库来配置一下他当前的兼容语法,应该能支持90%的国产数据库,现有的Mapper 文件也可以复用,不过现在这个PR确实还没测试完

@open-snail

Copy link
Copy Markdown
Collaborator

感谢你的PR,我review完了代码,目前没有计划在支持其他的数据库了, 这个PR可以作为一个参考,或许其他的小伙伴有类似的需求,

@open-snail 其实这个 PR不只是用作支持高斯的,因为有很多国产数据库基本都是 PG,MySQL,Oracle这三种模式,所以大部分情况下只需需要支持这三种兼容语法模式就可以了,根据实际的国产数据库来配置一下他当前的兼容语法,应该能支持90%的国产数据库,现有的Mapper 文件也可以复用,不过现在这个PR确实还没测试完

我明白你的意思,这块我会充分考虑一下,方便的支持更多的数据库

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants