我们如何让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;修改这里就可以了