热门标签 | 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;修改这里就可以了
在这里插入图片描述


推荐阅读
  • 安装mysqlclient失败解决办法
    本文介绍了在MAC系统中,使用django使用mysql数据库报错的解决办法。通过源码安装mysqlclient或将mysql_config添加到系统环境变量中,可以解决安装mysqlclient失败的问题。同时,还介绍了查看mysql安装路径和使配置文件生效的方法。 ... [详细]
  • 本文介绍了数据库的存储结构及其重要性,强调了关系数据库范例中将逻辑存储与物理存储分开的必要性。通过逻辑结构和物理结构的分离,可以实现对物理存储的重新组织和数据库的迁移,而应用程序不会察觉到任何更改。文章还展示了Oracle数据库的逻辑结构和物理结构,并介绍了表空间的概念和作用。 ... [详细]
  • 本文介绍了PhysioNet网站提供的生理信号处理工具箱WFDB Toolbox for Matlab的安装和使用方法。通过下载并添加到Matlab路径中或直接在Matlab中输入相关内容,即可完成安装。该工具箱提供了一系列函数,可以方便地处理生理信号数据。详细的安装和使用方法可以参考本文内容。 ... [详细]
  • 本文介绍了Android 7的学习笔记总结,包括最新的移动架构视频、大厂安卓面试真题和项目实战源码讲义。同时还分享了开源的完整内容,并提醒读者在使用FileProvider适配时要注意不同模块的AndroidManfiest.xml中配置的xml文件名必须不同,否则会出现问题。 ... [详细]
  • Nginx使用AWStats日志分析的步骤及注意事项
    本文介绍了在Centos7操作系统上使用Nginx和AWStats进行日志分析的步骤和注意事项。通过AWStats可以统计网站的访问量、IP地址、操作系统、浏览器等信息,并提供精确到每月、每日、每小时的数据。在部署AWStats之前需要确认服务器上已经安装了Perl环境,并进行DNS解析。 ... [详细]
  • Linux服务器密码过期策略、登录次数限制、私钥登录等配置方法
    本文介绍了在Linux服务器上进行密码过期策略、登录次数限制、私钥登录等配置的方法。通过修改配置文件中的参数,可以设置密码的有效期、最小间隔时间、最小长度,并在密码过期前进行提示。同时还介绍了如何进行公钥登录和修改默认账户用户名的操作。详细步骤和注意事项可参考本文内容。 ... [详细]
  • EPICS Archiver Appliance存储waveform记录的尝试及资源需求分析
    本文介绍了EPICS Archiver Appliance存储waveform记录的尝试过程,并分析了其所需的资源容量。通过解决错误提示和调整内存大小,成功存储了波形数据。然后,讨论了储存环逐束团信号的意义,以及通过记录多圈的束团信号进行参数分析的可能性。波形数据的存储需求巨大,每天需要近250G,一年需要90T。然而,储存环逐束团信号具有重要意义,可以揭示出每个束团的纵向振荡频率和模式。 ... [详细]
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • 原文地址:https:www.cnblogs.combaoyipSpringBoot_YML.html1.在springboot中,有两种配置文件,一种 ... [详细]
  • 解决VS写C#项目导入MySQL数据源报错“You have a usable connection already”问题的正确方法
    本文介绍了在VS写C#项目导入MySQL数据源时出现报错“You have a usable connection already”的问题,并给出了正确的解决方法。详细描述了问题的出现情况和报错信息,并提供了解决该问题的步骤和注意事项。 ... [详细]
  • 本文讨论了在数据库打开和关闭状态下,重新命名或移动数据文件和日志文件的情况。针对性能和维护原因,需要将数据库文件移动到不同的磁盘上或重新分配到新的磁盘上的情况,以及在操作系统级别移动或重命名数据文件但未在数据库层进行重命名导致报错的情况。通过三个方面进行讨论。 ... [详细]
  • Oracle10g备份导入的方法及注意事项
    本文介绍了使用Oracle10g进行备份导入的方法及相关注意事项,同时还介绍了2019年独角兽企业重金招聘Python工程师的标准。内容包括导出exp命令、删用户、创建数据库、授权等操作,以及导入imp命令的使用。详细介绍了导入时的参数设置,如full、ignore、buffer、commit、feedback等。转载来源于https://my.oschina.net/u/1767754/blog/377593。 ... [详细]
  • 本文介绍了如何使用C#制作Java+Mysql+Tomcat环境安装程序,实现一键式安装。通过将JDK、Mysql、Tomcat三者制作成一个安装包,解决了客户在安装软件时的复杂配置和繁琐问题,便于管理软件版本和系统集成。具体步骤包括配置JDK环境变量和安装Mysql服务,其中使用了MySQL Server 5.5社区版和my.ini文件。安装方法为通过命令行将目录转到mysql的bin目录下,执行mysqld --install MySQL5命令。 ... [详细]
  • Oracle seg,V$TEMPSEG_USAGE与Oracle排序的关系及使用方法
    本文介绍了Oracle seg,V$TEMPSEG_USAGE与Oracle排序之间的关系,V$TEMPSEG_USAGE是V_$SORT_USAGE的同义词,通过查询dba_objects和dba_synonyms视图可以了解到它们的详细信息。同时,还探讨了V$TEMPSEG_USAGE的使用方法。 ... [详细]
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社区 版权所有