国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁技術(shù)文章
文章詳情頁

SpringBoot Mybatis如何配置多數(shù)據(jù)源并分包

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

看了不少網(wǎng)上關(guān)于多數(shù)據(jù)源的配置,大致可分為兩類,分包方式和通過切面方式;

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

第一個(gè)子項(xiàng)目ds01即時(shí)使用分包方式完成多數(shù)據(jù)源配置。

總結(jié)項(xiàng)目中出現(xiàn)的問題和解決辦法:

數(shù)據(jù)庫的連接信息:

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

#數(shù)據(jù)庫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#數(shù)據(jù)庫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(...)引進(jìn)db.properties文件,但在運(yùn)行時(shí)報(bào)了org.xml.sax.SAXParseException; lineNumber: 1; columnNumber: 1; 前言中不允許有內(nèi)容的錯(cuò)誤;使用這個(gè)注解也是我瞎猜的。后是通過使用注解@PropertySource(value = 'classpath:/db.properties',encoding = 'utf-8')解決問題。

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

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

指定數(shù)據(jù)連接池類型DataType:

數(shù)據(jù)源類型可以在配置類生成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文件的路徑掃描問題:(相當(dāng)重要)

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

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

但在運(yùn)行時(shí)報(bào)錯(cuò):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(); }

而且通過這種方法表示任意路徑不能使用/**/,要使用/*/,否則識(shí)別不出來又會(huì)報(bào)相同的錯(cuò)誤,這點(diǎn)真是太坑了!

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

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

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

指定為BATCH類型后在進(jìn)行批量操作時(shí)效率有明顯的提高。

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持好吧啦網(wǎng)。

標(biāo)簽: Spring
相關(guān)文章:
主站蜘蛛池模板: 成人精品网| 成 人 黄 色 视频 免费观看 | 亚洲精品无码不卡在线播放he | 一级做a爱过程免费视 | 日本加勒比在线视频 | 特级毛片永久久免费观看 | 久久国产欧美日韩精品免费 | 久久国产精品女 | 成人亚洲综合 | 欧美一级毛片激情 | 亚洲国产精品一区二区久 | 成人精品区 | 日本一级毛片免费播放 | 久久久久久免费一区二区三区 | 国产视频高清在线 | 日本成人在线视频网站 | 久草视频在线免费看 | 日本一级级特黄特色大片 | 手机看片久久高清国产日韩 | 92精品国产自产在线 | 成人免费视频在线看 | 精品国产v无码大片在线观看 | 国产精品线在线精品 | 性感美女视频免费网站午夜 | 农村寡妇野外情一级毛片 | 精品一区二区三区在线播放 | 可以看毛片的网址 | 仑乱高清在线一级播放 | 国产一区第一页 | 久久人人草 | 国产综合成人久久大片91 | 久草免费在线播放 | 亚洲精品国产啊女成拍色拍 | 久久综合精品视频 | 8050网午夜一级毛片免费不卡 | 国产精品免费观在线 | 国产成人综合亚洲亚洲欧美 | 国产精品国产三级国产专区5o | 国产精品亚洲精品不卡 | 成年免费在线观看 | 国产高清在线精品一区在线 |