亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

您的位置:首頁技術文章
文章詳情頁

SpringBoot Mybatis如何配置多數據源并分包

瀏覽:3日期:2023-05-19 10:31:43

看了不少網上關于多數據源的配置,大致可分為兩類,分包方式和通過切面方式;

樣例已上傳至github:https://github.com/dadachao/multids

第一個子項目ds01即時使用分包方式完成多數據源配置。

總結項目中出現的問題和解決辦法:

數據庫的連接信息:

連接信息是寫在db.properties文件中的:

#數據庫ds1spring.datasource.ds1.driver-class-name=com.mysql.cj.jdbc.Driverspring.datasource.ds1.url=jdbc:mysql://localhost:3306/ds1?serverTimezone=UTCspring.datasource.ds1.username=rootspring.datasource.ds1.password=root#數據庫ds2spring.datasource.ds2.driver-class-name=com.mysql.cj.jdbc.Driverspring.datasource.ds2.url=jdbc:mysql://localhost:3306/ds2?serverTimezone=UTCspring.datasource.ds2.username=rootspring.datasource.ds2.password=root

這些信息將在配置類DbConfig1.java中引用。一開始我是通過使用注解@ImportResource(...)引進db.properties文件,但在運行時報了org.xml.sax.SAXParseException; lineNumber: 1; columnNumber: 1; 前言中不允許有內容的錯誤;使用這個注解也是我瞎猜的。后是通過使用注解@PropertySource(value = 'classpath:/db.properties',encoding = 'utf-8')解決問題。

其次是關于在配置類中使用@ConfigurationProperties注解自動注入連接信息值(value)的問題:spring.datasource.ds1.url=jdbc:mysql://localhost:3306/ds1?serverTimezone=UTC

注意要使用.url而不是.jdbc-url;

指定數據連接池類型DataType:

數據源類型可以在配置類生成DataSource的方法中指定:

@Bean(name = 'ds1DataSource') @Primary @ConfigurationProperties(prefix = 'spring.datasource.ds1') public DataSource getDataSource(){ DataSourceBuilder<?> dataSourceBuilder = DataSourceBuilder.create(); dataSourceBuilder.type(com.alibaba.druid.pool.DruidDataSource.class); return dataSourceBuilder.build(); }

指定***Mapper.xml文件的路徑掃描問題:(相當重要)

使用配置類進行數據源相關進行配置后,原先在application.yml中配置的相關參數就不起作用了(原因未知),原先我是在application.yml中配置了.xml文件的掃描路徑:

mybatis:mapper-locations: classpath:/mybatis/**/*.xmltype-aliases-package: com.kong.ds01.model

但在運行時報錯:Mapper Bound Error(not found);后來通過在配置類中寫入掃描路徑解決:

public final static String mapperXmlLocation = 'classpath:mybatis/*/*.xml';@Bean(name = 'ds1SqlSessionFactory') @Primary public SqlSessionFactory getSqlSessionFactory(@Qualifier('ds1DataSource') DataSource dataSource) throws Exception { SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean(); sqlSessionFactoryBean.setDataSource(dataSource); sqlSessionFactoryBean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources(mapperXmlLocation)); return sqlSessionFactoryBean.getObject(); }

而且通過這種方法表示任意路徑不能使用/**/,要使用/*/,否則識別不出來又會報相同的錯誤,這點真是太坑了!

指定執行器的類型(Execute.Type):

可以通過在配置類中的sqlSessionTemplate中指定:

@Bean(name = 'ds1SqlSessionTemplate') @Primary public SqlSessionTemplate getSqlSessionTemplate(@Qualifier('ds1SqlSessionFactory') SqlSessionFactory sqlSessionFactory){ return new SqlSessionTemplate(sqlSessionFactory, ExecutorType.BATCH); }

指定為BATCH類型后在進行批量操作時效率有明顯的提高。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網。

標簽: Spring
相關文章:
主站蜘蛛池模板: 黄色片的网址 | 久久青娱乐 | 尤物视频网站在线 | 亚欧在线精品免费观看一区 | 国产无圣光高清一区二区 | 免费一级黄色片 | 久久精品国产一区二区三区不卡 | 久久99国产精品免费观看 | 成人夜视频 | 黄色录像在线免费观看 | 久久国产视频网 | 在线欧美精品二区三区 | 一级骚片超级骚在线观看 | 成人免费大片黄在线观看com | 国产美女主播精品大秀系列 | 欧美黄色网页 | 97射射| 国产精品99久久99久久久看片 | ppypp日本欧美一区二区 | 国产在视频线精品视频二代 | 国产精品福利视频手机免费观看 | 国产精品成人观看视频国产奇米 | 99久久精品免费观看区一 | 天干天干夜天干天天爽 | 牛牛影院成人免费网页 | 久久综合中文字幕一区二区三区 | 国产合集91合集久久日 | 伊人色综合久久天天爱 | 韩国毛片在线观看 | 黄色网免费观看 | 亚洲综合图片区 | 国产xxxxxx久色视频在 | 久99久爱精品免费观看视频 | 一区中文字幕 | 萌白酱粉嫩福利视频在线观看 | 五月天久久婷婷 | 欧美精品国产一区二区 | av国产精品 | 深夜小视频在线观看 | 一本一道波多野结衣一区二区 | 成人亚洲国产精品久久 |