您好,登錄后才能下訂單哦!
這篇文章主要介紹“springboot集成mybatis plus和dynamic-datasource的方法是什么”的相關(guān)知識(shí),小編通過實(shí)際案例向大家展示操作過程,操作方法簡(jiǎn)單快捷,實(shí)用性強(qiáng),希望這篇“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所有版本默認(rèn)啟用stat和wall過濾器(默認(rèn)不支持批量執(zhí)行sql, 并且有些低版本無法自定義)
開啟批量執(zhí)行sql的方法
# 方法1:升級(jí)版本, 如2.5.0 spring: datasource: dynamic: druid: wall: noneBaseStatementAllow: true multiStatementAllow: true # 方法2:移除wall過濾器 spring: datasource: dynamic: druid: filters: stat
現(xiàn)有項(xiàng)目集成mybatis plus時(shí),應(yīng)指定另外的枚舉包,否則會(huì)出問題
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用來簡(jiǎn)化實(shí)體類:需要安裝lombok插件--> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.20</version> </dependency>
spring: datasource: dynamic: primary: master #設(shè)置默認(rèn)數(shù)據(jù)源或數(shù)據(jù)源組,master默認(rèn)值(數(shù)據(jù)源名稱可以隨意起名,沒有固定值,eg:db1,db2) strict: false #設(shè)置嚴(yán)格模式,默認(rèn)false不啟動(dòng). 啟動(dòng)后在未匹配到指定數(shù)據(jù)源時(shí)候回拋出異常,不啟動(dòng)會(huì)使用默認(rèn)數(shù)據(jù)源. 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 ,因?yàn)镈ruidDataSourceAutoConfigure會(huì)注入一個(gè)DataSourceWrapper,其會(huì)在原生的spring.datasource下找url,username,password等。而我們動(dòng)態(tài)數(shù)據(jù)源的配置路徑是變化的。
@Configuration @EnableTransactionManagement @MapperScan("com.example.md5_demo.com.db.**.mapper") public class MyBatisPlusConfig { /** * SQL 執(zhí)行性能分析插件 * 開發(fā)環(huán)境使用,線上不推薦。 maxTime 指的是 sql 最大執(zhí)行時(shí)長(zhǎng) */ @Bean @Profile({"dev","test"})// 設(shè)置 dev test 環(huán)境開啟 public PerformanceInterceptor performanceInterceptor() { PerformanceInterceptor performanceInterceptor = new PerformanceInterceptor(); performanceInterceptor.setMaxTime(100000);//ms,超過此處設(shè)置的ms則sql不執(zhí)行 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優(yōu)先級(jí):方法 > 類
@DS 可以注解在方法上和類上,同時(shí)存在方法注解優(yōu)先于類上注解,mapper或者service都可以添加,建議只在一個(gè)方法上添加即可。
關(guān)于“springboot集成mybatis plus和dynamic-datasource的方法是什么”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí),可以關(guān)注億速云行業(yè)資訊頻道,小編每天都會(huì)為大家更新不同的知識(shí)點(diǎn)。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。