博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ssm配置多数据库支持
阅读量:6305 次
发布时间:2019-06-22

本文共 1556 字,大约阅读时间需要 5 分钟。

  hot3.png

         工作中遇到一个问题,就是使用mybatis的时候,要兼容多种数据库,要根据不同的数据库写不同的sql。

        在网上找了很多资料,一个是要求需要mybatis3.1.1及其以上版本。一个是和spring整合后不能直接配置mybatis.xml,而是要直接配置SqlSessionFactoryBean。

        打开SqlSessionFactoryBean我们能看到很多成员变量。

private Resource configLocation;  private Resource[] mapperLocations;  private DataSource dataSource;  private TransactionFactory transactionFactory;  private Properties configurationProperties;  private SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();  private SqlSessionFactory sqlSessionFactory;  private String environment = SqlSessionFactoryBean.class.getSimpleName();  private boolean failFast;  private Interceptor[] plugins;  private TypeHandler
[] typeHandlers; private String typeHandlersPackage; private Class
[] typeAliases; private String typeAliasesPackage; private Class
typeAliasesSuperType; private DatabaseIdProvider databaseIdProvider; private ObjectFactory objectFactory; private ObjectWrapperFactory objectWrapperFactory;

        我们可以看到DatabaseIdProvider,这个就是配置数据方言的。

        我们只要构造这个bean赋值给SqlSessionFactoryBean就可以使用了。DatabaseIdProvider只是个接口,我们直接找实现类,很容易找到VendorDatabaseIdProvider。这个类有一个成员变量Properties就是用来设置方言名字和值的。

oracle
mysql

        剩下的就是把对象赋值给SqlSessionFactoryBean

        然后在编写mapper文件的时候就需要加databaseId就可以,这样在加载不同的数据库的时候就会加载不同的配置项。

 

 

        

 

转载于:https://my.oschina.net/xpbob/blog/1525794

你可能感兴趣的文章
php创建桌面快捷方式实现方法
查看>>
基于jquery实现的超酷动画源码
查看>>
fl包下的TransitionManager的使用
查看>>
Factorialize a Number
查看>>
[USB-Blaster] Error (209040): Can't access JTAG chain
查看>>
TreeSet的用法
查看>>
防HTTP慢速攻击的nginx安全配置
查看>>
深入理解PHP内核(十四)类的成员变量及方法
查看>>
Spring Boot2.0+中,自定义配置类扩展springMVC的功能
查看>>
参与博客编辑器改版,我的礼物 感谢51cto
查看>>
JavaWeb笔记——JSTL标签
查看>>
Eclipse插件大全 挑选最牛的TOP30
查看>>
一些实用性的总结与纠正
查看>>
Kubernetes概念
查看>>
逻辑卷管理器(LVM)
查看>>
一个小代码,欢迎大佬的意见,求指正
查看>>
搭建LAMP架构
查看>>
神经网络注意力机制--Attention in Neural Networks
查看>>
Spring.Net+WCF实现分布式事务
查看>>
在Linux上高效开发的7个建议
查看>>