Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Nacos多数据源通用适配改造点优化建议: 抽取3个方法的主键返回逻辑为指定字段 #9497

Closed
wuchubuzai2018 opened this issue Nov 7, 2022 · 0 comments
Assignees
Labels
Milestone

Comments

@wuchubuzai2018
Copy link
Contributor

背景

社区同学进行的Nacos多数据库适配的扩展代码,已经被管理员合并到主分支上了,为了以后多数据库适配扩展的过程中的出现的兼容问题,建议把某些代码,更改为通用的方式,进行适配,本次为修改3个方法为指定字段的方式

当前逻辑

当前的如下3个方法使用了Statement.RETURN_GENERATED_KEYS,目前这个只在mysql环境下生效,对于插件开发者编写其他数据库类型插件的时候,会报错,需要修改为new String[]{"id"}这种指定字段的方式。

修改范围

1、TenantCapacityPersistService类的insertTenantCapacity方法

PreparedStatement ps = connection.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS);

当前方法Statement.RETURN_GENERATED_KEYS方式仅支持mysql数据库,对于其他数据库应该提供手动new String[]{"id"}的方式,才可以。
2、GroupCapacityPersistService类的insertGroupCapacity方法

PreparedStatement ps = connection.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS);

当前方法Statement.RETURN_GENERATED_KEYS方式仅支持mysql数据库,对于其他数据库应该提供手动new String[]{"id"}的方式,才可以。
3、核心发布配置的ExternalStoragePersistServiceImpl类的addConfigInfoAtomic方法:

PreparedStatement ps = connection.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS);

当前方法Statement.RETURN_GENERATED_KEYS方式仅支持mysql数据库,对于其他数据库应该提供手动new String[]{"id"}的方式,才可以。

优化方式

根据前期在钉钉群里的沟通,对于这3个地方,封装到相应的mapper实现中。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

2 participants