转自:http://www.cfanz.cn/index.php?c=article&a=read&id=71583
mybatis配置多数据源本身很简单,和基本配置差别不大

但是如果要配置自动扫描mapper文件,可能会遇到一点儿问题

只有一个数据源时,只需要指定包就可以了,比如

<!-- 扫描映射器,自动创建 --> 
< bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> 
 <property name="basePackage" value="...*" /> 
< /bean>
而有多个数据源时,还需要指定使用哪一个sqlSession,在mybatis-spring的中文文档中,提到用sqlSessionFactory或sqlSessionTemplate属性来配置数据源,文档:

注意,没有必要去指定SqlSessionFactory或SqlSessionTemplate,因为MapperScannerConfigurer将会创建MapperFactoryBean,之后自动装配。但是,如果你使用了一个以上的DataSource(因此,也是多个的 SqlSessionFactory),那么自动装配可能会失效。这种情况下,你可以使用sqlSessionFactory或 sqlSessionTemplate属性来设置正确的工厂/模板。

配置为:

<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> 
 <property name="basePackage" value="..." /> 
 <property name="sqlSessionFactory" ref="fsasSqlSessionFactory"></property> 
< /bean>

当这样配置时,如果数据源DataSource的属性中使用了properties属性,那么就会报异常:

<!-- 配置dbcp连接池,注意要加入它的第三包jar包 --> 
< bean id="fsasDataSource" class="org.apache.commons.dbcp.BasicDataSource" 
 destroy-method="close"> 
 <property name="driverClassName" value="${jdbc.driverClassName}" /> 
 <property name="url" value="${fsas.url}" /> 
 <property name="username" value="${fsas.username}" /> 
 <property name="password" value="${fsas.password}" /> 
< /bean>

异常信息:

2013-3-28 1:37:57 WARN [com.mchange.v2.c3p0.DriverManagerDataSource:107] - Could not load driverClass ${jdbc.driverClass}

java.lang.ClassNotFoundException: ${jdbc.driverClass}

查看官方英文文档发现,有专门提醒:

NOTE sqlSessionFactoryBean and sqlSessionTemplateBean properties were the only option available up to MyBatis-Spring 1.0.2 but given that the MapperScannerConfigurer runs earlier in the startup process thatPropertyPlaceholderConfigurer there were frequent errors. For that purpose that properties have been deprecated and the new properties sqlSessionFactoryBeanName and sqlSessionTemplateBeanName are recommended.
 
大概意思是:MapperScannerConfigurer初始化的时候,PropertyPlaceholderConfigurer还没有将properties的参数值替换,所有导致直接将参数名,如“${jdbc.driverClassName}”设置到dataSource的字段属性中。
 
同时,官方已经弃用了采用sqlSessionFactoryBean 和 SesionTemplateBean的方式进行配置,而推荐使用sqlSessionFactoryBeanName 和  sqlSessionTemplateBeanName
所以正确的配置应该为:

<!-- 扫描映射器,自动创建 --> 
< bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> 
 <property name="basePackage" value="..." /> 
 <property name="sqlSessionTemplateBeanName" value="fsasSqlSession" /> 
< /bean>

mybatis-spring集成:配置多数据库源中遇到的问题的更多相关文章

  1. tomcat中配置jndi数据库源

    tomcat添加依赖 lib目录下添加依赖mysql-connector-java-8.0.16 配置数据源 介绍两种方法:tomcat中配置或web应用中配置 tomcat/conf/context ...

  2. Activiti配置实例以及Spring集成配置

    public class TestDB { public static void main(String[] args) { //1. 创建Activiti配置对象的实例 ProcessEngineC ...

  3. 一文读懂Spring动态配置多数据源---源码详细分析

    Spring动态多数据源源码分析及解读 一.为什么要研究Spring动态多数据源 ​ 期初,最开始的原因是:想将答题服务中发送主观题答题数据给批改中间件这块抽象出来, 但这块主要使用的是mq消息的方式 ...

  4. MyBatis Spring整合配置映射接口类与映射xml文件

    本文转自http://blog.csdn.net/zht666/article/details/38706083 Spring整合MyBatis使用到了mybatis-spring,在配置mybati ...

  5. MyBatis Spring SqlSessionFactoryBean 配置

    在基本的 MyBatis 中,session 工厂可以使用 SqlSessionFactoryBuilder 来创建.而在 MyBatis-Spring 中,则使用 SqlSessionFactory ...

  6. MyBatis Spring MapperScannerConfigurer 配置

    没有必要在 Spring 的 XML 配置文件中注册所有的映射器.相反,你可以使用一个 MapperScannerConfigurer , 它 将 会 查 找 类 路 径 下 的 映 射 器 并 自 ...

  7. RabbitMQ与spring集成,配置完整的生产者和消费者

    RabbitMQ与AMQP协议详解可以看看这个 http://www.cnblogs.com/frankyou/p/5283539.html 下面是rabbitMQ和spring集成的配置,我配置了二 ...

  8. [原创]java WEB学习笔记101:Spring学习---Spring Bean配置:IOC容器中bean的声明周期,Bean 后置处理器

    本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...

  9. Spring Boot 配置Oracle数据库

    1.添加oralce 依赖包,仓库没有则通过maven装载到本地仓库: 2.application.properties 中添加配置,特别是第一个配置项要严重注意! spring.jpa.databa ...

随机推荐

  1. 数组方法indexOf & lastIndexOf

    indexOf() 语法:arrayObject.indexOf(searchvalue, startIndex) 功能:从数组的开头(位置0)开始向后查找. 参数:searchvalue:必需,要查 ...

  2. Rest架构风格

    一.REST介绍:: 1.REST是英文 Representational State Transfer的缩写 -- 表象化状态转变 或者 表述性状态转移 1.1 REST是 Web服务的一种架构风格 ...

  3. 【转】Linux useradd

    Linux 系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统.用户的账号一方面可以帮助系统管理员对使用系统的用户进行 ...

  4. 2018.11.09 洛谷P1110 [ZJOI2007]报表统计(multiset)

    传送门 sb题. 直接用两个multisetmultisetmultiset维护相邻两个数的差值和所有数的前驱后继. 插入一个数的时候更新一下就行了. 代码: #include<bits/std ...

  5. mysql 配置MHA

    在配置好GTID复制后,配置MHA的高可用. 1.准备3台机器 192.168.31.100 主库 192.168.31.101 从库 192.168.31.104 从库 MHA控制节点 2.设置SS ...

  6. Win7 VS2013环境编译Lua5.3.1

    主要参考这篇文章,原文有几个错误顺便改正了. 在Windows下使用Visual Studio编译Lua5.3 写本文时Lua官方网站放出的新版本为5.3.1,然后我不知道为啥,神奇的国内不能访问Lu ...

  7. C++IO cin

    cin cin.get() 每次只读缓冲区一个字符,不能接收空格 cin.getline() 读缓冲区一行,能够接收空格 cin.ignore(2) 忽略缓冲器2个字节 int i = cin.pee ...

  8. Linux未安装上传下载的插件,怎么进行文件的上传下载

    首先连上服务: 然后Alt+p,打开SFTp窗口: 例如,我们今天要往tomcat的webappmu目录下上传一个文件: 先pwd,查看我们Linux上所处的目录:pwd 然后进入到tomcat的we ...

  9. IntelliJ IDEA 2017版 Spring5最基本的bean例子创建

    一.简述         SpringBoot是基于spring框架之上的快速开发的框架.Spring4核心就是容器,容器提供了对bean的装配和管理.       spring依赖加载:       ...

  10. load data妙用

    load变量和用户变量的巧妙结合,实现灵活导入字段列(NO.1) LOAD DATA INFILE 'file.csv' INTO TABLE dados_meteo (@var1, @var2) S ...