文档章节

Play Framework 2.5 整合 MyBatis —— 多数据源

芝麻糖葫芦
 芝麻糖葫芦
发布于 2017/07/21 18:24
字数 258
阅读 228
收藏 1

接上一篇博客:Play Framework 2.5 整合 MyBatis

在整合 MyBatis 的基础上,如果想要使用多个数据源的话,就不是增加一个 Module 那么简单了。

如果我们在上一步的基础上,再加一个 Module ,提供不同的 DataSourceProvider ,会提示下面这个错误:

1) A binding to javax.sql.DataSource was already configured at org.mybatis.guice.MyBatisModule.bindDataSourceProvider(MyBatisModule.java:328) (via modules: com.google.inject.util.Modules$OverrideModule -> module.PlayMyBatisModule2).

同样参考 MyBatis 官方整合 Guice 的文档 Multiple Datasources 部分

需要使用 PrivateModule 再封装一层:

package module;

import com.google.inject.Key;
import com.google.inject.PrivateModule;
import com.google.inject.Provider;
import org.apache.ibatis.io.ResolverUtil;
import org.apache.ibatis.transaction.jdbc.JdbcTransactionFactory;
import org.mybatis.guice.MyBatisModule;
import play.db.Database;
import play.db.NamedDatabaseImpl;

public class PlayMyBatisModule1 extends PrivateModule {
    @Override
    protected void configure() {
        install(new MyBatisModule() {
            @Override
            protected void initialize() {
                environmentId("default");
                Provider<Database> provider = binder().getProvider(Key.get(Database.class, new NamedDatabaseImpl("my-db1")));
                bindDataSourceProvider(() -> provider.get().getDataSource());
                bindTransactionFactoryType(JdbcTransactionFactory.class);

                addMapperClasses("com.morven.product.mapper.db1");
            }
        });
        // 利用 MyBatis 的工具类,获取 Dao 包路径下所有的 class 并暴露到 Guice 全局环境中
        new ResolverUtil<>()
                .find(new ResolverUtil.IsA(Object.class), "com.morven.product.mapper.db1")
                .getClasses()
                .forEach(PlayMyBatisModule2.this::expose);
    }
}

注意:

  • 如果不在 install 方法后面调用 expose 把 Dao 类暴露到全局环境,Controller 或 Service 会获取不到 Dao

© 著作权归作者所有

共有 人打赏支持
芝麻糖葫芦
粉丝 3
博文 20
码字总数 5204
作品 0
济南
高级程序员
私信 提问
Play 1.x 学习资料汇总

1.Play!Framework学习笔记:初识Play(http://blog.csdn.net/w302974215/article/details/46926007) 2.Play Framework入门引导(http://somefuture.iteye.com/blog/1985667) 3.Play框架1.2.7版......

IT追寻者
2016/07/22
43
0
分布式事务开源解决方案用例版--hihsoft-atomikos

【组件价值】 Atomikos 是一款 Java/JTA 事务处理工具 与spring完美结合,实现配置化分布式事务 多数据源分布式事务的开源解决方案 跨平台,不受应用服务器限制 也是学习spring、mybatis、j...

平凡哥
2014/08/07
1K
1
spring boot入门-2

时光荏苒,岁月如梭,距离我上次写的spring-boot入门1已经过去了好长的时间了,就这么一段时间里面,spring boot有发生了很多的新的变化.在配置方面更加的简化. 使用spring boot能更加简单的进行...

u010398771
2017/12/24
0
0
整合Spring SpringMVC MyBatis

1.介绍 Spring就没什么好介绍的了。 SpringMVC:http://my.oschina.net/ChiLin/blog/693486 MyBatis: MyBatis is a first class persistence framework with support for custom SQL, stor......

蜡笔小小小新
2016/06/08
706
3
mybatis3 配置文件解析

配置文件的基本结构 configuration —— 根元素 environment transactionManager —— 事务管理器 dataSource —— 数据源 properties —— 定义配置外在化 settings —— 一些全局性的配置 ...

北方攻城师
2014/08/02
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Confluence 6 教程:在 Confluence 中导航

当你对 Confluence 有所了解后,你会发现 Confluence 使用起来非常简单。这个教程主要是针对你使用的 Confluence 界面进行一些说明,同时向你展示在那里可以进行一些通用的任务和操作。 空间...

honeymose
今天
2
0
sed, awk 练习

1. sed打印某行到某行之间的内容 2. sed 转换大小写 将单词首字母转化大写 将所有小写转化大写 3. sed 在某一行最后面添加一个数字 4. 删除某行到最后一行 解析: {:a;N;$!ba;d} :a : 是...

Fc丶
今天
2
0
babel6升级到7,jest-babel报错:Requires Babel "^7.0.0-0", but was loaded with "6.26.3".

自从将前端环境更新到babel7,jest-babel之前是基于babel6的,执行时候就会报:Requires Babel "^7.0.0-0", but was loaded with "6.26.3". 很烦,因为连续帮好几台电脑修复这个问题,所以记...

曾建凯
今天
1
0
探索802.11ax

802.11ax承诺在真实条件下改善峰值性能和最差情况。 如何改善今天的Wi-Fi? 在决定如何改进当前版本以外的Wi-Fi时,802.11ac,IEEE和Wi-Fi联盟调查了Wi-Fi部署和行为,以确定更广泛使用的障碍...

linuxprobe16
今天
2
0
使用linux将64G的SDCARD格式化为FAT32

一、命令如下: sudo fdisk -lsudo mkfs.vfat /dev/sda -Isudo fdisk /dev/sda Welcome to fdisk (util-linux 2.29.2). Changes will remain in memory only, until you decide to wri......

mbzhong
今天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部