您好,登錄后才能下訂單哦!
這篇文章主要介紹“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
<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>
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
@SpringBootApplication(exclude = {DruidDataSourceAutoConfigure.class})
這里要排除DruidDataSourceAutoConfigure ,因為DruidDataSourceAutoConfigure會注入一個DataSourceWrapper,其會在原生的spring.datasource下找url,username,password等。而我們動態數據源的配置路徑是變化的。
@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 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的方法是什么”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識,可以關注億速云行業資訊頻道,小編每天都會為大家更新不同的知識點。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。