因项目要求,需在满足要求的时候mysql与oracle是巨款进行切换,找到如下两种方式进行切换:
一、更改配置文件的扫描信息,使用springboot需在配置文件中配置mybatis的信息,将mybatis的文件扫描目录进行变更即可,我的项目的命名规则是mapper底下的是mysql的xml文件,oracle底下的是oracle的xml文件。
mysql的配置信息:
mybatis :
mapper-locations: classpath:config/mybatis/mapper/**/*.xml
type-aliases-package: com.etom.vc.admin.pojo.base
configuration:
map-underscore-to-camel-case: true
oracle的配置信息:
mybatis :
mapper-locations: classpath:config/mybatis/oracle/**/*.xml
type-aliases-package: com.etom.vc.admin.pojo.base
configuration:
map-underscore-to-camel-case: true
二、使用同一份xml文件,但是里面写两个方法适用不同的数据库
1、在启动类配置bean文件
@Bean
public DatabaseIdProvider getDatabaseIdProvider(){
DatabaseIdProvider databaseIdProvider = new VendorDatabaseIdProvider();
Properties properties = new Properties();
properties.setProperty("Oracle","oracle");
properties.setProperty("MySQL","mysql");
databaseIdProvider.setProperties(properties);
return databaseIdProvider;
}
2、更改xml文件
原xml文件:
<mapper namespace="com.xxx.mapper" >
<select id="list" resultType="com.xxx.base.TestDemo">
SELECT * from test_demo
</select>
</mapper>
现xml文件:方法名,参数类型以及返回类型都可不进行更改,只需加上databasrId为你配置的名称类型,如没添加databaseId名称,则默认方法mysql数据库和oracle数据库通用,当项目启用时,如果使用的是oracle则执行databaseId=”oracle”的语句,如果mysql值执行databaseId=”mysql”的语句
<mapper namespace="com.xxx.mapper" >
<select id="list" resultType="com.xxx.base.TestDemo" databaseId="mysql">
SELECT * from test_demo
</select>
<select id="list" resultType="com.xxx.base.TestDemo" databaseId="oracle">
SELECT * from test_demo
</select>
</mapper>
参考文献:
[1]火柴盒zhang博客,http://blog.csdn.net/likewindy/article/details/51396576