Spring boot + Mybatis Plus DatabaseId的使用

Spring boot + Mybatis Plus DatabaseId的使用

Mybatis中使用DatabaseId

Mybatis中如果需要對DatabaseId進行支持需要在配置 mybatis-config.xml 中加入如下配置

<databaseIdProvider type="DB_VENDOR">
  <property name="MySQL" value="mysql"/>        
  <property name="Oracle" value="oracle" />
</databaseIdProvider>

加入這段配置所我們就可以在mapper.xml中這麼使用了

<select id="selectAll" resultType="com.alen.trial.multilds.model.Multil" databaseId="mysql">
     select * from multil
</select>
<select id="selectAll" resultType="com.alen.trial.multilds.model.Multil" databaseId="oracle">
       select id from multil
</select>

那麼在Mybatis plus中應該怎麼用呢?

經過分析以上代碼可知,Mybatis中提供一個接口DatabaseIdProvider來做數據庫類型和sql中DatabaseId的映射,Mybatis通過上面的配置文件創建了一個實現DatabaseIdProvider的類並載入了映射配置,知道這一點就好辦了,我們只需要提供一個同樣的DatabaseIdProvider 實現類到Spring容器中應該就可以了,於是我在我的項目中加入了以下代碼:

   /**
   爲了配置管理我把這段代碼加入到了 MybatisPlusConfig 中
   */
    @Bean
    public DatabaseIdProvider databaseIdProvider() {
        VendorDatabaseIdProvider databaseIdProvider = new VendorDatabaseIdProvider();
        Properties properties = new Properties();
        properties.put("Oracle","oracle");
        properties.put("MySQL","mysql");
        databaseIdProvider.setProperties(properties);
        return databaseIdProvider;
    }

在application.yml中加入(這一步不是必須的,Mybatis會根據配置的數據源來判斷數據庫類型從而來選擇使用哪個sql語句)

mybatis-plus:
  mapper-locations: classpath*:com/alen/trial/multilds/dao/*.xml
  global-config:
    db-config:
#      db-type: mysql
      db-type: oracle

測試結果

首先使用oracle測試(注意這裏的數據源要修改成oracle的數據源)

爲了方便測試加入了以下接口

    @GetMapping("/select/all")
    public List<Multil> getDataFormMysqlA() {
        return service.select();
    }

查詢databaseId爲oracle的

使用mysql測試

查詢databaseId爲mysql的

對比一下配置

<select id="selectAll" resultType="com.alen.trial.multilds.model.Multil" databaseId="mysql">
     select * from multil
</select>
<select id="selectAll" resultType="com.alen.trial.multilds.model.Multil" databaseId="oracle">
       select id from multil
</select>

沒有問題,就是亂碼了有點小瑕疵!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章