mybatis-databaseIdProvider多数据库支持
<select
id="selectPerson"
parameterType="int"
parameterMap="deprecated"
resultType="hashmap"
resultMap="personResultMap"
flushCache="false"
useCache="true"
timeout="10000"
fetchSize="256"
statementType="PREPARED"
resultSetType="FORWARD_ONLY"
databaseId="mysql">
下面的解释中有一个databaseId属性: 如果配置了 databaseIdProvider,MyBatis 会加载所有的不带 databaseId 或匹配当前 databaseId 的语句;如果带或者不带的语句都有,则不带的会被忽略。新增,修改和删除都有这个属性
一、在configuration.xml配置
<databaseIdProvider type="DB_VENDOR">
<property name="MySQL" value="mysql" />
<property name="Oracle" value="oracle" />
</databaseIdProvider>
二、新建Mapper
public interface DatabaseIdProviderMapper {
String selectTime();
}
三、新建 DatabaseIdProvider.xml
<mapper namespace="com.yihaomen.mybatis.dao.DatabaseIdProviderMapper">
<select id="selectTime" resultType="String" databaseId="mysql">
SELECT NOW() FROM dual
</select>
<select id="selectTime" resultType="String" databaseId="oracle">
SELECT 'oralce'||to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') FROM dual
</select>
</mapper>
四、在configuration.xml中添加映射器
<mappers>
<mapper resource="com/yihaomen/mybatis/model/DatabaseIdProvider.xml"/>
</mappers>
五、jdbc.properties文件
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://127.0.0.1:3306/mybatis-learn?characterEncoding=utf8
jdbc.username=root
jdbc.password=tiger #jdbc.driver=oracle.jdbc.driver.OracleDriver
#jdbc.url=jdbc:oracle:thin:@localhost:1521:mybatis
#jdbc.username=mybatis
#jdbc.password=mybatis maxActive= 50
六、测试
import com.yihaomen.mybatis.dao.DatabaseIdProviderMapper;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import user.BaseTest; public class DatabaseIdProviderTest extends BaseTest{ public static void main(String[] args) {
SqlSessionFactory factory = getSession();
SqlSession session = factory.openSession();
DatabaseIdProviderMapper mapper = session.getMapper(DatabaseIdProviderMapper.class);
System.out.println(mapper.selectTime());
}
}
- 结果说明
如果当前启用的是oracle则执行databaseId=”oracle”的语句,如果mysql值执行databaseId=”mysql”的语句
https://gitee.com/huayicompany/springmvc-mybatis
参考文献:
[1] 杨开振 著,《深入浅出MyBatis技术原理与实战》, 电子工业出版社,2016.09
[2]火柴盒zhang博客,http://blog.csdn.net/likewindy/article/details/51396576
mybatis-databaseIdProvider多数据库支持的更多相关文章
- MyBatis 多数据库支持
From<MyBatis从入门到精通> <!-- 4.6 多数据库支持 简单的看了一下,没有深入研究~~~ -->
- mybatis3.0-[topic10-14] -全局配置文件_plugins插件简介/ typeHandlers_类型处理器简介 /enviroments_运行环境 /多数据库支持/mappers_sql映射注册
mybatis3.0-全局配置文件_ 下面为中文官网解释 全局配置文件的标签需要按如下定义的顺序: <!ELEMENT configuration (properties?, setting ...
- 五、使用druid管理数据库,mybatis连接mysql数据库
简介: 使用 mybatis 连接 mysql 数据库, 一套简单的增删改查流程, 前台用 bootstrap, bootstrap-table 框架, 最后用 druid 监控数据库连接情况 ...
- 利用mybatis generator实现数据库之间的表同步
项目背景: 项目需要对两个服务器上的表进行同步,表的结构可能不一样.比如服务器A上的表i同步数据到服务器B上的表j,i和j的结构可能不一样,当然大部分字段是一样的.项目看起来很简单,网上一搜也是很多, ...
- (45). Spring Boot MyBatis连接Mysql数据库【从零开始学Spring Boot】
大家在开发的时候,会喜欢jdbcTemplate操作数据库,有喜欢JPA操作数据库的,有喜欢MyBatis操作数据库的,对于这些我个人觉得哪个使用顺手就使用哪个就好了,并没有一定要使用哪个,个人在实际 ...
- SpringBoot 多数据库支持:
SpringBoot 多数据库支持: springboot2.0+mybatis多数据源集成 https://www.cnblogs.com/cdblogs/p/9275883.html Spring ...
- 如何用IDEA创建springboot(maven)并且整合mybatis连接mysql数据库和遇到的问题
一.New->Project 二.点击next 三.在Group栏输入组织名,Artifact就是项目名.选择需要的java版本,点击next 四.添加需要的依赖 在这里我们也可以添加sql方面 ...
- Spring Mvc和Mybatis的多数据库访问配置过程
Spring Mvc 加Mybatis的多数据库访问源配置访问过程如下: 在applicationContext.xml进行配置 <?xml version="1.0" en ...
- <<Python基础课程>>学习笔记 | 文章13章 | 数据库支持
备注:本章介绍了比较简单,只是比较使用样品,主要假设是把握连接,利用数据库.和SQLite做演示样本 ------ Python数据库API 为了解决Python中各种数据库模块间的兼容问题,如今已经 ...
- Mybatis插入MySQL数据库中文乱码
Mybatis插入MySQL数据库中文乱码 在dataSource.properties配置文件中设置useUnicode=true&characterEncoding=utf-8编码即可. ...
随机推荐
- Python2和Python3中的字符串编码问题解决
Python2和Python3在字符串编码上是有明显的区别. 在Python2中,字符串无法完全地支持国际字符集和Unicode编码.为了解决这种限制,Python2对Unicode数据使用了单独的字 ...
- AspNet Core Web 应用程序的启动 当项目中 没有Startup.cs 类如何设置启动 配置等等
感叹: Core 16年6月1号 在中国宣布上线 到现在已经快经历两年时间了,目前版本已经到了2.0 就目前的前景来看,个人感觉 到2020年才可能有所起色,等到Core更成熟 个人看法:在.net这 ...
- [Spark性能调优] 第二章:彻底解密Spark的HashShuffle
本課主題 Shuffle 是分布式系统的天敌 Spark HashShuffle介绍 Spark Consolidated HashShuffle介绍 Shuffle 是如何成为 Spark 性能杀手 ...
- Python模块学习---Web
import urlparse url = urlparse.urlparse("http://www.python.org/doc/FAQ.html") print url pr ...
- [转载]Tortoise SVN使用方法,简易图解
刚到公司实习,为了版本控制,我公司使用SVN控制版本,在此记下SVN使用方法,仅供参考! 废话少说,上图! ---------------------------------- ...
- MongoDB批量导入及简单的性能优化
今天简单分享一下MongoDB使用过程中的一些性能优化,其实并不只适用MongoDB,其他数据库多少也可适用. 首先先随机导入一千万条数据.这里我分段导入的,因为mongo的BsonDocument一 ...
- Django date__range([start,end])其中不包括end时间
# date__range([start,end]) # 不包括end时间,需转换最后的截止时间 from datetime import datetime, timedelta new_end = ...
- tomcat 日志切割 catalina.out
在实际生产环境中,tomcat的 catalina.out日志默认是不切割的,由于看起来很不方便,以及在备份等方面都比较麻烦.是时候切割该文件了. 环境说明 centos 7.3 tomcat 8.5 ...
- Android 线程_笔记
多线程 一.为什么要使用多线程 1.提高用户体验或避免ANR 在事件处理代码中需要使用多线程,响应时间超过5s,即会出现ANR(Application is not responding),并因为响应 ...
- Scrapy运行错误:ImportError: No module named win32api
需要安装pypiwin32,直接通过官网安装exe会出现很多错误,所以直接运行以下命令: pip install pypiwin32