转自: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. git版本控制工具的使用(3)

    git remote查看远程库的信息get remote -v可以更详细,查看推送和抓取权限 git push origin master把本地的master提交到远程的库对应的主分支 gt push ...

  2. sql在最后一行添加合计

    select nvl(sno,'合计') sno,sum(score) score from sc group by rollup(sno);

  3. 682. Baseball Game

    static int wing=[]() { std::ios::sync_with_stdio(false); cin.tie(NULL); ; }(); class Solution { publ ...

  4. 2019.02.09 bzoj2839: 集合计数(容斥原理)

    传送门 题意简述:对于一个有N个元素的集合在其2^N个子集中取出若干集合(至少一个),使得它们的交集的元素个数为K,求取法的方案数. 思路:考虑枚举相交的是哪kkk个,有CnkC_n^kCnk​种方案 ...

  5. 2019.01.08 bzoj3809: Gty的二逼妹子序列(莫队+权值分块)

    传送门 题意:多组询问,问区间[l,r]中权值在[a,b]间的数的种类数. 看了一眼大家应该都知道要莫队了吧. 然后很容易想到用树状数组优化修改和查询做到O(mnlogamax)O(m\sqrt nl ...

  6. C++中各种时间类型的转换(包括MFC中的时间类型)

    平时写代码会经常遇到时间类型转换的问题,如时间戳转为格式化时间,或者反过来等,时间类型有的为time_t,还有FILETIME一堆,在这里记录下他们之间是如何转换的. 时间类型及其意义 FILETIM ...

  7. 牛客训练三:处女座和小姐姐(三)(数位dp)

    题目链接:传送门 思路:数位dp的记忆化搜索模板 从高位向低位枚举,逐位确定每一位的6的个数,dp[i][s]表示处理到第i条边,状态为s时的数字的个数. 注意,要使用long long类型. #in ...

  8. excel2007vba绘图1

    参考:http://club.excelhome.net/thread-480025-1-1.html '----------------------------------------------- ...

  9. 安卓修改开机logo

    这里我们是在ubuntu下进行操作我是用root用户登陆的,首先安装netpbm库 执行:apt-get install netpbm 对于Android系统最开始表现logo是在内核当中,所以首先我 ...

  10. mysql 入门 jdbc

    在java程序中连接mysql,先要到mysql的网站上面去下载驱动,并且安装,默认安装在c盘(我的都是默认安装,目录为C:\Program Files\MySQL\MySQL Connector J ...