-
Notifications
You must be signed in to change notification settings - Fork 2.2k
New issue
Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? # to your account
如何支持多个数据源? #148
Comments
以上方法可行。 也可以自定义 如果需要前端自定义,可以加一个字段用来区分,例如 |
了解了,谢谢tommy |
您好,我这边想用前端传入一个 datasourceid,然后后台根据这个参数动态的去 redis(获取其他第三方) 获取数据源的信息(账号,密码,DBuri),再跟 DB 进行连接返回。实际上就是可能有多个DB实例,想让前端根据参数来实现跟哪个DB进行交互,请问这个该怎么实现? |
可以在 DemoObjectParser 重写 newSQLConfig ,取出 datasourceid(建议改用 @datasourceId 这样的关键词)并赋值给 SQLConfig @Override
public SQLConfig newSQLConfig(RequestMethod method, String table, String alias, JSONObject request, List<Join> joinList, boolean isProcedure) throws Exception {
DemoSQLConfig config = super.newSQLConfig(method, table, alias, request, joinList, isProcedure);
Map<String, Object> map = getCustomMap();
Integer datasourceId = map == null ? null : map.get("@datasourceId");
config.setDatasourceId(datasourceId == null ? 0 : datasourceId);
return config;
} 然后在 DemoSQLConfig 新增一个成员变量 datasourceId,通过它来提供 dbUri, dbAccount, dbPassword, database, schema 等属性。 |
试了下使用 @datasourceId,但是在重写 newSQLConfig 方法里的 JSONObject request 参数没有把 @datasourceId 带过来,request.getIntValue("@datasourceId") 一直都是 0,这里需要把 @datasourceId 怎么处理才能接受到呢? |
忘说了,这个 request 参数是对应 User 对象的,@datasourceId 应该写在对象里面 { "[]": { "User": { "sex": 1, "@datasourceId": 1 } } 如果要支持全局默认参数(写在最外层),参考 @database, @Schema 在 APIJSONParser 和 APIJSONObjectParser 两个地方的处理 |
新增数据源关键词 @Datasource,可由业务完全自定义 |
新增 连接池及多数据源 Demo(Druid + HikariCP) |
请问 这个多数据源的demo怎么配置使用,有相关文档吗?我下载这个代码尝试配置了几种的可能方式都不对 |
按这个 Demo 来,SpringBoot yaml 配置加 APIJSON AbstractSQLEexcutor 配置 |
Demo里边也没有写如何切换数据源呀,这个是需要前端请求的时候传什么参数吗??? |
前端传 |
谢谢 |
@TommyLemon hi,TommyLemon,现在数据源有支持redis吗?有的话是否有demo?没有的话,如果要实现,你觉得应该怎么实现,需要注意什么? |
Redis 对接缓存即可,在 DemoSQLExecutor 重写 getCache, putCache, removeCache 方法 注意缓存过期,需要自己根据业务需要来更新缓存。 可以在 Request 表配置增删改数据后调用自定义的 远程函数 来删改对应的缓存 |
多源数据库Access的配置还在默认数据库上么? |
SpringBoot yaml 配置加 APIJSON AbstractSQLEexcutor 配置 这个是怎么加的,没找到地方啊 |
@anacondapy6 另外还有专门的两个连接池简单 Demo 以后不要再问这种伸手党问题 |
请教下。
比如我有3个数据源,不同ip端口和库表。
直接建3个类,都继承APIJSONSQLConfig来做?
然后对每个数据源,都搞一套连接池
The text was updated successfully, but these errors were encountered: