亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

springboot集成mybatis?plus和dynamic-datasource的方法是什么

發布時間:2022-01-07 15:40:08 來源:億速云 閱讀:422 作者:iii 欄目:開發技術

這篇文章主要介紹“springboot集成mybatis plus和dynamic-datasource的方法是什么”的相關知識,小編通過實際案例向大家展示操作過程,操作方法簡單快捷,實用性強,希望這篇“springboot集成mybatis plus和dynamic-datasource的方法是什么”文章能幫助大家解決問題。

springboot集成mybatis plus和dynamic-datasource注意事項

環境

  • spring-boot-starter-parent 1.5.2.RELEASE

  • mybatis-plus-boot-starter 2.x

  • dynamic-datasource-spring-boot-starter 2.5.0

  • druid-spring-boot-starter 1.1.10

注意事項

@SpringBootApplication(exclude = DruidDataSourceAutoConfigure.class)

dynamic所有版本默認啟用stat和wall過濾器(默認不支持批量執行sql, 并且有些低版本無法自定義)

開啟批量執行sql的方法

# 方法1:升級版本, 如2.5.0
spring:
  datasource:
    dynamic:
      druid: 
        wall:
          noneBaseStatementAllow: true
          multiStatementAllow: true
# 方法2:移除wall過濾器
spring:
  datasource:
    dynamic:
      druid: 
        filters: stat

現有項目集成mybatis plus時,應指定另外的枚舉包,否則會出問題

mybatis-plus:
  type-enums-package: com.zxkj.demo.enums.mp

springboot mybatis plus多數據源配置整合dynamic-datasource

pro文件引入依賴

       <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid-spring-boot-starter</artifactId>
            <version>1.2.6</version>
        </dependency>
        <!--mybatis-plus-->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.1.2</version>
        </dependency>
        <!--主從配置依賴-->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>dynamic-datasource-spring-boot-starter</artifactId>
            <version>2.5.6</version>
        </dependency>
        <!--lombok用來簡化實體類:需要安裝lombok插件-->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.20</version>
        </dependency>

application.yml配置

spring:
  datasource:
    dynamic:
      primary: master #設置默認數據源或數據源組,master默認值(數據源名稱可以隨意起名,沒有固定值,eg:db1,db2)
      strict: false #設置嚴格模式,默認false不啟動. 啟動后在未匹配到指定數據源時候回拋出異常,不啟動會使用默認數據源.
      datasource:
        master:
          driver-class-name: com.mysql.cj.jdbc.Driver
          url: jdbc:mysql://192.168.3.220:3306/mchouse_test1?useUnicode=true&characterEncoding=utf-8
          username: *****
          password: *****
        slave_1:
          driver-class-name: com.mysql.cj.jdbc.Driver
          url: jdbc:mysql://112.30.184.149:3306/net_trans_sup_hefei_edi?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai
          username: *****
          password: *****
        slave_2:
          driver-class-name: com.mysql.cj.jdbc.Driver
          url: jdbc:mysql://120.55.168.100:33066/net_trans_sup_hefei_edi?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai
          username: *****
          password: *****
mybatis-plus:
#  configuration:
#    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl #org.apache.ibatis.logging.slf4j.Slf4jImpl
  mapper-locations: classpath:mapper/*.xml #配置mybatis.xml文件路勁 classpath根路徑
  global-config:
    # 邏輯刪除配置
    db-config:
      # 刪除后
      logic-delete-value: 1
      # 刪除前
      logic-not-delete-value: 0

修改Application啟動類

@SpringBootApplication(exclude = {DruidDataSourceAutoConfigure.class})

這里要排除DruidDataSourceAutoConfigure ,因為DruidDataSourceAutoConfigure會注入一個DataSourceWrapper,其會在原生的spring.datasource下找url,username,password等。而我們動態數據源的配置路徑是變化的。

創建MybatisPlusConfig

@Configuration
@EnableTransactionManagement
@MapperScan("com.example.md5_demo.com.db.**.mapper")
public class MyBatisPlusConfig {
    /**
     * SQL 執行性能分析插件
     * 開發環境使用,線上不推薦。 maxTime 指的是 sql 最大執行時長
     */
    @Bean
    @Profile({"dev","test"})// 設置 dev test 環境開啟
    public PerformanceInterceptor performanceInterceptor() {
        PerformanceInterceptor performanceInterceptor = new PerformanceInterceptor();
        performanceInterceptor.setMaxTime(100000);//ms,超過此處設置的ms則sql不執行
        performanceInterceptor.setFormat(true);
        return performanceInterceptor;
    }
    /**
     * 邏輯刪除插件
     */
    @Bean
    public ISqlInjector sqlInjector() {
        return new LogicSqlInjector();
    }
    /**
     * 分頁插件
     */
    @Bean
    public PaginationInterceptor paginationInterceptor() {
        return new PaginationInterceptor();
    }
}

創建mapper接口

@Mapper
public interface DemoMapper extends BaseMapper<Demo> {
    List<Demo> getAllList();
    @DS("slave_2")
    List<Demo> getShopList();
}

測試類測試

@SpringBootTest
class Md5DemoApplicationTests {
    @Autowired
    private DemoMapper demoMapper;
    @Test
    void contextLoads() {
        List<Demo> list=demoMapper.getAllList();
        System.out.println(list);
        System.out.println("***************");
        List<Demo> shopList=demoMapper.getShopList();
        System.out.println(shopList);
    }
}

@DS優先級:方法 > 類

@DS 可以注解在方法上和類上,同時存在方法注解優先于類上注解,mapper或者service都可以添加,建議只在一個方法上添加即可。

關于“springboot集成mybatis plus和dynamic-datasource的方法是什么”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識,可以關注億速云行業資訊頻道,小編每天都會為大家更新不同的知識點。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

宝清县| 博爱县| 钟祥市| 桓台县| 呈贡县| 赤水市| 永平县| 广汉市| 吉安县| 深泽县| 十堰市| 芜湖县| 甘德县| 镇江市| 哈密市| 盘山县| 潮安县| 龙陵县| 南川市| 香河县| 邹城市| 托克托县| 全椒县| 信丰县| 尤溪县| 兴义市| 永平县| 宜宾县| 文成县| 五河县| 库车县| 西华县| 出国| 洛浦县| 临清市| 镇沅| 饶平县| 道真| 天等县| 扎鲁特旗| 云梦县|