http://blog.csdn.net/millery22/article/details/49465425
上一篇博客说到同一个问题,经过和朋友的研究已经参考网上的资料,现在给出一份更简洁的配置。
情景:现在单个工程中需要连接两个库,这两个库在同一个MySQL中,两个库都需要进行读写。
解决:
第一步:将spring和mybatis整合,这个过程就不具体演示了,在这个过程中创建了直接使用的五个配置文件、两个类、一个标识。
五个配置文件:
jdbc.propertis(数据库连接信息)
applicationContext.xml(spring的核心配置文件)
applicationContext-transaction.xml(spring事务管理配置文件)
mybatis-config.xml(mybatis的核心配置文件)
applicationContext-mybatis.xml(spring和mybatis整合的配置文件)
两个类:
DataSourceContextHolder.Java
DynamicDataSource.java
一个标识:
实体类和数据库表的对应。
第二步:jdbc.properties数据连接信息配置
第三步:applicationContext.xml核心配置文件内容如下
第四步:application-transaction.xml,spring事务管理配置文件
第五步: mybatis-config.xml , mybatis 核心配置文件
第六步:applicationContex-mybatis.xml,spring和mybatis整合配置文件
第七步:创建两个类,放到com.millery.utils包中
DataSourceContextHolder类:
DynamicDataSource 类:
第八步:关键的一步,一个标识,在设置动态数据源的时候,连接了两个库,但是在怎 么确定每次连接都是需要连接的数据库呢,那就要这个标识了。
假设users数据库中有一张表交user,这张表对应到java代码中有个实体类。在实体类中我们都要加注解@Table(name=”表名”),此时的表名不能再直接写user,而是写users.user(数据库名.数据表),这里的数据库名就是关键的一个标识。如果现在product数据库中有一个item数据表,此时同上面的一样,加上product数据库的标识即可。
最后一步:就是写一个测试的类进行测试,这里就偷个懒不写,读者根据自己的需求写。
注意:
1、此配置是通过讨论测试成功的方案,比之前的个人版本更优化,配置更简洁,如果有更多的数据库连接,只需要在spring核心配置文件中添加一个数据源,然后配置到动态数据源中即可;
2、配置仅供参考,直接复制,可能出现异常,毕竟每个人电脑的环境不是完全相同的。
鸣谢:此博客是经过讨论和参考朋友博客完成,特此感谢在网上共享研究成果资源的朋 友。