为什么80%的码农都做不了架构师?>>>   

工作中遇到一个问题,就是使用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就是用来设置方言名字和值的。

    <bean id="vendorProperties"class="org.springframework.beans.factory.config.PropertiesFactoryBean"><property name="properties"><props><prop key="Oracle">oracle</prop><prop key="MySQL">mysql</prop></props></property></bean><bean id="databaseIdProvider" class="org.apache.ibatis.mapping.VendorDatabaseIdProvider"><property name="properties" ref="vendorProperties" /></bean>

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

    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"><property name="dataSource" ref="dataSource" /><property name="databaseIdProvider" ref="databaseIdProvider" /><property name="configLocation" value="classpath:SqlMapConfig.xml" /><property name="mapperLocations" value="classpath*:mapper/*.xml" /></bean>

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

 <select id="findAll" resultMap="result" databaseId="mysql"></select>

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

ssm配置多数据库支持相关推荐

  1. tp3分布式session mysql_分布式数据库支持

    ThinkPHP内置了分布式数据库的支持,包括主从式数据库的读写分离,但是分布式数据库必须是相同的数据库类型. 配置`DB_DEPLOY_TYPE` 为1 可以采用分布式数据库支持.如果采用分布式数据 ...

  2. 【MySQL笔记】mysql来源安装/配置步骤和支持中国gbk/gb2312编码配置

    不久的学习笔记.分享.我想有很大的帮助谁刚开始学习其他人的 备注:该票据于mysql-5.1.73版本号例如 1. mysql源代码编译/安装步骤 1) 官网下载mysql源代码并解压 2) cd至源 ...

  3. SSM项目的数据库密码加密方案

    项目主要采用:SpringMVC4.3.2.RELEASE +Spring4.3.2.RELEASE + Maven 3.3.3 + druid 1.0.29 + Mybatis 3.2.8 + My ...

  4. 《Hadoop实战手册》一1.6 配置Sqoop以支持SQL Server

    本节书摘来异步社区<Hadoop实战手册>一书中的第1章,第1.6节,作者: [美]Jonathan R. Owens , Jon Lentz , Brian Femiano 译者: 傅杰 ...

  5. 六、配置Oracle数据库的网络环境

    1. 连接建立的过程 场景:oracle默认监听器1521,把数据库服务注册到监听器中,客户端才能通过监听器登录到数据库上操作, 数据库的名称是orcl,注册后,叫服务命名 [oracle@oracl ...

  6. 2 数据源配置_Quick BI支持哪些数据源(配置操作篇)

    Quick BI 潜心打造了核心技术底座(OLAP分析引擎),实现了SQL解析.SQL调度.SQL优化.查询加速等基础能力,支撑Quick BI的数据分析和查询加速.OLAP分析引擎包括数据源连接.数 ...

  7. endnote初始化数据库支持_服务端编程——数据库(MySQL、sequelize) - 天生笑点低你奈我何...

    一.数据库 前端发送api请求的流程 通过API发送请求,到model进行业务处理,将数据存到或在MYSQL查询,将数据一并给KOA服务器请求,最后将请求的结果返回给客户端 关系型数据库.非关系型数据 ...

  8. Windows系统云服务器安装、配置 MySQL 数据库

    MySQL支持多种系统的云服务器,是目前最为流行的开放源码的数据库管理系统,是完全网络化的.跨平台的关系型数据库系统.因其完全免费,拥有成本低:体积小,运行速度快手到许多开发者和中小企业青睐.君哥在这 ...

  9. Spring Boot MyBatis配置多种数据库

    mybatis-config.xml是支持配置多种数据库的,本文将介绍在Spring Boot中使用配置类来配置. 1. 配置application.yml # mybatis配置 mybatis:c ...

最新文章

  1. 算法理解|从头开始理解梯度提升算法
  2. web 点击劫持 X-Frame-Options
  3. go mongodb排序查询_【赵强老师】MongoDB中的索引(下)
  4. 《编程原本 》一第2章 变换及其轨道
  5. bzoj 2653 洛谷 P2839 [国家集训队] middle
  6. 【新机软件安装及环境配置】(持续更新ing)
  7. 关于sfc /scannow后主题文件的重置
  8. 概率论-随机变量的数字特征思维导图
  9. Python3+PCAN-USB基于PCAN-Basic二次开发实现上位机功能
  10. Python脚本完成VCS文件的file_list到.prj文件的转化
  11. 浙江省计算机英语等级考试,2020年上半年浙江省高校计算机等级考试报名(浙江外国语...
  12. 51单片机 仿真器驱动安装失败
  13. 2019阿里巴巴技术面试题集锦!(附答案)
  14. ThinkPhp5.2加减法验证码
  15. pycharm shortcut
  16. 中国联通dns服务器未响应,关于光猫设置的说明和常见问题
  17. ib物理hl难吗?ib物理考点避坑指南
  18. 浙江科技学院c语言考试试卷,浙江科技学院c语言-1-C试卷A.doc
  19. 管理学总论之新古典管理理论和现代管理理论
  20. 计算机bios无法进入安全模式,电脑安全模式进不去怎么办 电脑安全模式进不去解决方法【图文】...

热门文章

  1. PHP学习笔记-PHP语言基础3
  2. Swift URL含有中文的处理
  3. Python selenium根据class定位页面元素,xpath定位
  4. Spring AOP概念理解 (通俗易懂)【转】
  5. Tricky Sum
  6. 482. License Key Formatting
  7. asp网络编程:用ASP打开远端MDB文件的方法
  8. href 里面 链接前面加/与不加的区别?(绝对路径与相对路径)
  9. 吃西餐的吴大师略懂《赤壁》
  10. 如何解决Win10不能新建项目的问题?