ssm配置多数据库支持
为什么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配置多数据库支持相关推荐
- tp3分布式session mysql_分布式数据库支持
ThinkPHP内置了分布式数据库的支持,包括主从式数据库的读写分离,但是分布式数据库必须是相同的数据库类型. 配置`DB_DEPLOY_TYPE` 为1 可以采用分布式数据库支持.如果采用分布式数据 ...
- 【MySQL笔记】mysql来源安装/配置步骤和支持中国gbk/gb2312编码配置
不久的学习笔记.分享.我想有很大的帮助谁刚开始学习其他人的 备注:该票据于mysql-5.1.73版本号例如 1. mysql源代码编译/安装步骤 1) 官网下载mysql源代码并解压 2) cd至源 ...
- SSM项目的数据库密码加密方案
项目主要采用:SpringMVC4.3.2.RELEASE +Spring4.3.2.RELEASE + Maven 3.3.3 + druid 1.0.29 + Mybatis 3.2.8 + My ...
- 《Hadoop实战手册》一1.6 配置Sqoop以支持SQL Server
本节书摘来异步社区<Hadoop实战手册>一书中的第1章,第1.6节,作者: [美]Jonathan R. Owens , Jon Lentz , Brian Femiano 译者: 傅杰 ...
- 六、配置Oracle数据库的网络环境
1. 连接建立的过程 场景:oracle默认监听器1521,把数据库服务注册到监听器中,客户端才能通过监听器登录到数据库上操作, 数据库的名称是orcl,注册后,叫服务命名 [oracle@oracl ...
- 2 数据源配置_Quick BI支持哪些数据源(配置操作篇)
Quick BI 潜心打造了核心技术底座(OLAP分析引擎),实现了SQL解析.SQL调度.SQL优化.查询加速等基础能力,支撑Quick BI的数据分析和查询加速.OLAP分析引擎包括数据源连接.数 ...
- endnote初始化数据库支持_服务端编程——数据库(MySQL、sequelize) - 天生笑点低你奈我何...
一.数据库 前端发送api请求的流程 通过API发送请求,到model进行业务处理,将数据存到或在MYSQL查询,将数据一并给KOA服务器请求,最后将请求的结果返回给客户端 关系型数据库.非关系型数据 ...
- Windows系统云服务器安装、配置 MySQL 数据库
MySQL支持多种系统的云服务器,是目前最为流行的开放源码的数据库管理系统,是完全网络化的.跨平台的关系型数据库系统.因其完全免费,拥有成本低:体积小,运行速度快手到许多开发者和中小企业青睐.君哥在这 ...
- Spring Boot MyBatis配置多种数据库
mybatis-config.xml是支持配置多种数据库的,本文将介绍在Spring Boot中使用配置类来配置. 1. 配置application.yml # mybatis配置 mybatis:c ...
最新文章
- 算法理解|从头开始理解梯度提升算法
- web 点击劫持 X-Frame-Options
- go mongodb排序查询_【赵强老师】MongoDB中的索引(下)
- 《编程原本 》一第2章 变换及其轨道
- bzoj 2653 洛谷 P2839 [国家集训队] middle
- 【新机软件安装及环境配置】(持续更新ing)
- 关于sfc /scannow后主题文件的重置
- 概率论-随机变量的数字特征思维导图
- Python3+PCAN-USB基于PCAN-Basic二次开发实现上位机功能
- Python脚本完成VCS文件的file_list到.prj文件的转化
- 浙江省计算机英语等级考试,2020年上半年浙江省高校计算机等级考试报名(浙江外国语...
- 51单片机 仿真器驱动安装失败
- 2019阿里巴巴技术面试题集锦!(附答案)
- ThinkPhp5.2加减法验证码
- pycharm shortcut
- 中国联通dns服务器未响应,关于光猫设置的说明和常见问题
- ib物理hl难吗?ib物理考点避坑指南
- 浙江科技学院c语言考试试卷,浙江科技学院c语言-1-C试卷A.doc
- 管理学总论之新古典管理理论和现代管理理论
- 计算机bios无法进入安全模式,电脑安全模式进不去怎么办 电脑安全模式进不去解决方法【图文】...