Mybatis 支持多数据库

1,574 阅读1分钟

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>