mybatis 本身是支持多数据库的。
bean 注解形式
@Bean
public DatabaseIdProvider getDatabaseIdProvider() {
DatabaseIdProvider databaseIdProvider = new VendorDatabaseIdProvider();
Properties p = new Properties();
p.setProperty("Oracle", "oracle");
p.setProperty("MySQL", "mysql");
p.setProperty("PostgreSQL","postgresql");
databaseIdProvider.setProperties(p);
return databaseIdProvider;
}
xml 配置形式
<databaseIdProvider type="DB_VENDOR">
<property name="MySQL" value="mysql"></property>
<property name="Oracle" value="oracle"></property>
</databaseIdProvider>
在SqlSessionFactoryBean中 设置 databaseIdProvider
SqlSessionFactoryBean sessionFactoryBean = new SqlSessionFactoryBean();
sessionFactoryBean.setDatabaseIdProvider(databaseIdProvider);
完成上诉步骤,在*Mapper.xml 中 加入databaseId 属性 指定数据库
<select id="listByIdWithRecursive" parameterType="java.util.Map" resultType="com.onlyou.gfecp.model.entity.PrjClassEntity" databaseId="oracle">
select *
from
t_gfecp_model_prj_class pc
start with pc.id = #{prjClassId}
connect by prior pc.parent_id = pc.id
ORDER BY pc.seq
</select>