-
Notifications
You must be signed in to change notification settings - Fork 2.2k
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
如何支持多个数据源? #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: