多数据库使用,model问题
我一个项目里用了2个数据库,其中A数据库有20个表,B数据库有10个表,我知道可以配置多数据源,然后查询,但是这样的情况下,model怎么办?启动的时候不是会进行隐射, 但是B数据库的10个表,在以A为主数据源的时候,不就报错了?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
我一个项目里用了2个数据库,其中A数据库有20个表,B数据库有10个表,我知道可以配置多数据源,然后查询,但是这样的情况下,model怎么办?启动的时候不是会进行隐射, 但是B数据库的10个表,在以A为主数据源的时候,不就报错了?
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(14)
3.1.2在win下会出bug换3.1.3-snapshot
另外关于表相同数据不同这样的方案我本身没有做过,所以还没有比较深入的思考.在两个包建立不同的类可否?
https://github.com/b1412/jfinal-ext/blob/master/doc/doc.org 文档里面有说明 多数据源 推荐将不同数据源的Model放在不同的package中然后调用 addScanPackages 设置要扫描的package atbp = new AutoTableBindPlugin(druidPlugin) .addScanPackages("com.xx.yy.service1.model"); atbp2 = new AutoTableBindPlugin("another",druidPlugin2) .addScanPackages("com.xx.yy.service2.model2","com.xx.yy.service2.model3") 如果在一个package里面有属于不同数据源的model(如果不是因为无法避 免的历史遗留原因不要采用这样的方式),那么给Model加上TableBind注 解并给configName属性赋值
我用了这个方法,然后用的addScanPackages,用的循环配置每个数据库,但是一直报索引超出范围,现在改成了一个一个表的写法,回头我再试下,有成果我发出来
jfe3.1.2支持多数据源,不过在win下scanPackage方法有bug.
3.1.3修复不过没正式发布.目前发布了snapshot
https://oss.sonatype.org/content/repositories/snapshots/com/jfinal/jfinal-ext/
mvn/gradle等 加入依赖
嗯,我去看下最新版,另外我把问题描述下: ABC3个数据库,A有20个表,BC40个表。 BC两个数据库的表结构一样,但是数据不一样 我在配置插件的时候,怎么可以不用每个表去写代码隐射?
@绝望的八皮
回复
其实一张表一行代码,工作量不大,相比 hibernate 时代的配置量,已经可以忽略不计了。使用 AutoTableBindPlugin 需要用注解,其实也相当于配置,一样的工作量
回复
嗯,刚对配置改进了下,对比下,只是增加了几十行代码
引用来自“子寒”的评论
有个新问题,@JFinal
之前用的AutoTableBindPlugin可以不用对每个表都写addMapping
但是现在我用的多个数据库,就不能用AutoTableBindPlugin了,那有什么办法可以不用对每个表都写addMapping啊? 毕竟几个数据库,表都上百个了
有个新问题,@JFinal
之前用的AutoTableBindPlugin可以不用对每个表都写addMapping
但是现在我用的多个数据库,就不能用AutoTableBindPlugin了,那有什么办法可以不用对每个表都写addMapping啊? 毕竟几个数据库,表都上百个了
j
已经解决了,是版本问题,我用的1.4的,换成1.9的就好了。 看官网手册上没有这样写,当时没察觉是版本导致的 。。。
引用来自“子寒”的评论
写这个代码的时候报错
ActiveRecordPlugin arpMysql = new ActiveRecordPlugin("mysql", dsMysql);
最后按提示,修改后,就没有后面的configname了
ActiveRecordPlugin arpMysql = new ActiveRecordPlugin( dsMysql);
@JFinal
写这个代码的时候报错
ActiveRecordPlugin arpMysql = new ActiveRecordPlugin("mysql", dsMysql);
最后按提示,修改后,就没有后面的configname了
ActiveRecordPlugin arpMysql = new ActiveRecordPlugin( dsMysql);
@JFinal