主题:会不会考虑加入动态指定数据库的shcema?

黑洞里 2018年07月06日 216

如题,在业务中遇到了这个情况。

闲大赋 2018年07月06日

动态指定?不明白使用场景,如果你用md,则应该无所谓啊,sql里使用schema没问题。

  • 黑洞里 :就是说,这边会因为业务数据不同而需要切换schema,在md中使用能当做参数吗?(2018年07月09日)
  • 黑洞里 :但是即便在md中可以,但是通用的增删改还是不行啊,如何才能在代码中通过参数的方式指定呢(2018年07月09日)
闲大赋 2018年07月09日

不明白为啥会有切换操作,这应该是几个数据库之间互相操作吧,可以指定多个SQLManager,每个SQLManager代表一个数据库,你需要操作的POJO可以不指定schema,跟随你的SQLManager 一致,也就是你需要用不同SQLManager  操作

  • 黑洞里 :根据会跟着业务分库,但服务还是同一套,增加数据连接好像也不行啊(2018年07月10日)
  • 黑洞里 :另外,官网怎么挂了?(2018年07月10日)
  • 闲大赋 :你意思代码是一套,但会根据上下文访问不同数据库?(2018年07月10日)
闲大赋 2018年07月10日

http://bbs.ibeetl.com/bbs/bbs/topic/1212-1.html  这里有个文章,此作者目前也被我拉入beetl开发群,如果你需要,可以参考这个文章,或者我给你他qq号你联系

多数据源切换我考虑考虑如何实现吧,争取以后尽快实现。我想本质方式还是切换不同SQLManager,只不过是用同一套service,或者dao,对吧?


如果service你那能写一套,内部切换多个SQLManager,应该就可以了

  • 黑洞里 :没错,就是业务代码用同一套,然后根据业务代码里面的参数动态选择数据库,按你这样说,内部切换sqlManager应该是可以实现的,多谢赋大的解答,期待早日实现(2018年07月10日)
  • 黑洞里 :但是在调用的时候应该是无感的,利用方法参数似乎要重写的方法太多了,是不是可以给SQLManager增加一个类似switch(schema)的方法还比较好?(2018年07月10日)
闲大赋 2018年07月10日

我看他的那个例子就是无感的,但总有个地方告诉使用哪个SQLManager

SQLManager 只负责一个数据库,建议你在上层切换,而不是靠SQLManager来切换来解决,比如封装SQLMananger

MutilepSQLManager.db("oracle98").single()

MutilepSQLManager.db("oracle98")  只是返回一个适当的SQLManager,比如返回ip地址是98的Oracle数据库

MutilepSQLManager类只需要维护一个Map就可以了