热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Mybatis中使用databaseIdProvider支持多数据库支持

我们如何让mybatis更好的同时支持多数据的操作。在更换数据库时无需做更多的操作,只需修改一下mybatis的核心配置文件既可pom文件

我们如何让mybatis更好的同时支持多数据的操作。在更换数据库时无需做更多的操作,只需修改一下mybatis的核心配置文件既可
pom文件

<dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.6</version></dependency><!-- https://mvnrepository.com/artifact/com.oracle/ojdbc6 --><dependency><groupId>com.oracle</groupId><artifactId>ojdbc6</artifactId><version>11.2.0.4.0-atlassian-hosted</version></dependency>

mybatis配置文件

<?xml version&#61;"1.0" encoding&#61;"UTF-8"?>
<!DOCTYPE configurationPUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration><!-- 读取jdbc.properties属性文件--><properties resource&#61;"jdbc.properties"/><typeAliases><package name&#61;"com.zxf.pojo"/></typeAliases><!--环境配置--><environments default&#61;"mysql_1"> <!--用那个数据库就写那个数据库的ID --><environment id&#61;"mysql_1"><!--mysql的ID --><transactionManager type&#61;"JDBC"></transactionManager><dataSource type&#61;"POOLED"><property name&#61;"driver" value&#61;"${jdbc.driver}"/><property name&#61;"url" value&#61;"${jdbc.url}"/><property name&#61;"username" value&#61;"${jdbc.username}"/><property name&#61;"password" value&#61;"${jdbc.password}"/></dataSource></environment><environment id&#61;"oracle_1"> <!--Oracle的ID --><transactionManager type&#61;"JDBC"></transactionManager><dataSource type&#61;"POOLED"><property name&#61;"driver" value&#61;"${oracle.driver}"/><property name&#61;"url" value&#61;"${oracle.url}"/><property name&#61;"username" value&#61;"${oracle.user}"/><property name&#61;"password" value&#61;"${oracle.pwd}"/></dataSource></environment></environments><!-- 定义多数据库支持--><databaseIdProvider type&#61;"DB_VENDOR"><property name&#61;"MySQL" value&#61;"mysql"/> <!--mysql的定义 --><property name&#61;"Oracle" value&#61;"oracle"/><!--oracle的定义 --><property name&#61;"SQL Server" value&#61;"sqlserver"/></databaseIdProvider><!-- 引入映射--><mappers><mapper resource&#61;"mappers/EmployeeMapper.xml"/></mappers>
</configuration>

jdbc.properties

jdbc.driver&#61;com.mysql.jdbc.Driver
jdbc.url&#61;jdbc:mysql://192.168.0.148:3306/test
jdbc.username&#61;root
jdbc.password&#61;abc123oracle.driver&#61;oracle.jdbc.OracleDriver
oracle.url&#61;jdbc:oracle:thin:&#64;localhost:1521:orcl
oracle.user&#61;scott
oracle.pwd&#61;abc123

pojo类

package com.zxf.pojo;public class Employee {private String emp_no;private String emp_name;public String getEmp_name() {return emp_name;}public void setEmp_name(String emp_name) {this.emp_name &#61; emp_name;}public String getEmp_no() {return emp_no;}public void setEmp_no(String emp_no) {this.emp_no &#61; emp_no;}
}

Mapper接口

package com.zxf.mapper;import com.zxf.pojo.Employee;import java.util.List;public interface EmployeeMapper {public List<Employee> getAll();public Employee getByIdEmp(String emp_no);
}

Mapper映射文件

<?xml version&#61;"1.0" encoding&#61;"UTF-8"?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace&#61;"com.zxf.mapper.EmployeeMapper"><select id&#61;"getAll" resultType&#61;"employee" databaseId&#61;"mysql"> <!-- 引用mysql的定义-->select * from employee_basic</select><select id&#61;"getAll" resultType&#61;"employee" databaseId&#61;"oracle"><!-- 引用oracle的定义-->select ENAME emp_name from emp</select><select id&#61;"getByIdEmp" resultType&#61;"employee">select * from employee_basic where emp_no&#61;#{emp_no}</select>
</mapper>

最后测试运行的时候&#xff0c;如果要切换数据库&#xff1b;修改这里就可以了
在这里插入图片描述


推荐阅读
  • Spring特性实现接口多类的动态调用详解
    本文详细介绍了如何使用Spring特性实现接口多类的动态调用。通过对Spring IoC容器的基础类BeanFactory和ApplicationContext的介绍,以及getBeansOfType方法的应用,解决了在实际工作中遇到的接口及多个实现类的问题。同时,文章还提到了SPI使用的不便之处,并介绍了借助ApplicationContext实现需求的方法。阅读本文,你将了解到Spring特性的实现原理和实际应用方式。 ... [详细]
  • 安装mysqlclient失败解决办法
    本文介绍了在MAC系统中,使用django使用mysql数据库报错的解决办法。通过源码安装mysqlclient或将mysql_config添加到系统环境变量中,可以解决安装mysqlclient失败的问题。同时,还介绍了查看mysql安装路径和使配置文件生效的方法。 ... [详细]
  • 本文介绍了Oracle数据库中tnsnames.ora文件的作用和配置方法。tnsnames.ora文件在数据库启动过程中会被读取,用于解析LOCAL_LISTENER,并且与侦听无关。文章还提供了配置LOCAL_LISTENER和1522端口的示例,并展示了listener.ora文件的内容。 ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • Tomcat/Jetty为何选择扩展线程池而不是使用JDK原生线程池?
    本文探讨了Tomcat和Jetty选择扩展线程池而不是使用JDK原生线程池的原因。通过比较IO密集型任务和CPU密集型任务的特点,解释了为何Tomcat和Jetty需要扩展线程池来提高并发度和任务处理速度。同时,介绍了JDK原生线程池的工作流程。 ... [详细]
  • 自动轮播,反转播放的ViewPagerAdapter的使用方法和效果展示
    本文介绍了如何使用自动轮播、反转播放的ViewPagerAdapter,并展示了其效果。该ViewPagerAdapter支持无限循环、触摸暂停、切换缩放等功能。同时提供了使用GIF.gif的示例和github地址。通过LoopFragmentPagerAdapter类的getActualCount、getActualItem和getActualPagerTitle方法可以实现自定义的循环效果和标题展示。 ... [详细]
  • 本文讨论了在数据库打开和关闭状态下,重新命名或移动数据文件和日志文件的情况。针对性能和维护原因,需要将数据库文件移动到不同的磁盘上或重新分配到新的磁盘上的情况,以及在操作系统级别移动或重命名数据文件但未在数据库层进行重命名导致报错的情况。通过三个方面进行讨论。 ... [详细]
  • Java学习笔记之面向对象编程(OOP)
    本文介绍了Java学习笔记中的面向对象编程(OOP)内容,包括OOP的三大特性(封装、继承、多态)和五大原则(单一职责原则、开放封闭原则、里式替换原则、依赖倒置原则)。通过学习OOP,可以提高代码复用性、拓展性和安全性。 ... [详细]
  • 本文介绍了如何使用C#制作Java+Mysql+Tomcat环境安装程序,实现一键式安装。通过将JDK、Mysql、Tomcat三者制作成一个安装包,解决了客户在安装软件时的复杂配置和繁琐问题,便于管理软件版本和系统集成。具体步骤包括配置JDK环境变量和安装Mysql服务,其中使用了MySQL Server 5.5社区版和my.ini文件。安装方法为通过命令行将目录转到mysql的bin目录下,执行mysqld --install MySQL5命令。 ... [详细]
  • r2dbc配置多数据源
    R2dbc配置多数据源问题根据官网配置r2dbc连接mysql多数据源所遇到的问题pom配置可以参考官网,不过我这样配置会报错我并没有这样配置将以下内容添加到pom.xml文件d ... [详细]
  • 本文介绍了如何清除Eclipse中SVN用户的设置。首先需要查看使用的SVN接口,然后根据接口类型找到相应的目录并删除相关文件。最后使用SVN更新或提交来应用更改。 ... [详细]
  • IjustinheritedsomewebpageswhichusesMooTools.IneverusedMooTools.NowIneedtoaddsomef ... [详细]
  • iOS超签签名服务器搭建及其优劣势
    本文介绍了搭建iOS超签签名服务器的原因和优势,包括不掉签、用户可以直接安装不需要信任、体验好等。同时也提到了超签的劣势,即一个证书只能安装100个,成本较高。文章还详细介绍了超签的实现原理,包括用户请求服务器安装mobileconfig文件、服务器调用苹果接口添加udid等步骤。最后,还提到了生成mobileconfig文件和导出AppleWorldwideDeveloperRelationsCertificationAuthority证书的方法。 ... [详细]
  • 在Oracle11g以前版本中的的DataGuard物理备用数据库,可以以只读的方式打开数据库,但此时MediaRecovery利用日志进行数据同步的过 ... [详细]
  • 本文介绍了Oracle存储过程的基本语法和写法示例,同时还介绍了已命名的系统异常的产生原因。 ... [详细]
author-avatar
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有