<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                分別做過通用mapper和mybatis plus的多數據源, mybatis plus的很簡單 # mybatis plus 版本 啟動類 不加這個會提示 url 啥的報錯 ``` @SpringBootApplication(exclude = DruidDataSourceAutoConfigure.class) ``` 配置(這塊用mybatisplus官網的) ``` spring: datasource: dynamic: primary: master0 #設置默認的數據源或者數據源組,默認值即為master strict: false #嚴格匹配數據源,默認false. true未匹配到指定數據源時拋異常,false使用默認數據源 datasource: master0: url: username: password: driver-class-name: com.mysql.jdbc.Driver # 3.2.0開始支持SPI可省略此配置 master1: url: username: password: driver-class-name: com.mysql.jdbc.Driver # 3.2.0開始支持SPI可省略此配置 ``` // 使用的不是 primary 指定的數據源, 需要在service 層類上增加 @DS("master1") @DS 可以注解在方法上或類上,同時存在就近原則 方法上注解 優先于 類上注解。 沒有@DS 默認數據源(primary 指定的) @DS("dsName") dsName可以為組名也可以為具體某個庫的名稱 primary 設置時注意內容, 我這邊出現的問題: 這樣配置導致 連接 master 數據源的代碼提示 master 表數據表不存在, 但是連接的數據庫顯示的是 master_1, ``` datasource: dynamic: primary: master strict: false datasource: master: 其他省略 master_1: 其他省略 ``` maven 依賴 ``` <!-- 多數據源 --> <dependency> <groupId>com.baomidou</groupId> <artifactId>dynamic-datasource-spring-boot-starter</artifactId> <version>3.3.1</version> </dependency> ``` 低版本(3.3.0及以下) dynamic-datasource-spring-boot-starter 開發沒問題, 在使用jar包啟動時, 會報錯 java.lang.NoClassDefFoundError:io/seata/rm/datasource/SeataDataSourceProxy # 通用mapper 項目使用mysql 做主數據源, 甲方提供了SqlServer的視圖讓我們連接同步部分數據 只有主數據源使用通用mapper , 其他數據源直接通過自己寫的sql使用 **通用mapper 掃描包 使用 import tk.mybatis.spring.annotation.MapperScan; ** 不然通用mapper的語句都會報錯 沒找到xxx實體類 主數據源 ``` import org.apache.ibatis.session.SqlSessionFactory; import org.mybatis.spring.SqlSessionFactoryBean; import org.mybatis.spring.SqlSessionTemplate; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.boot.jdbc.DataSourceBuilder; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Primary; import org.springframework.core.io.support.PathMatchingResourcePatternResolver; import tk.mybatis.spring.annotation.MapperScan; import javax.sql.DataSource; /** * mysql 的數據源連接配置 */ @Configuration @MapperScan(basePackages = {"com.*.dao"}, sqlSessionFactoryRef = "dbSqlSessionFactory") public class DbDataSource { @Primary // 表示這個數據源是默認數據源, 這個注解必須要加,因為不加的話spring將分不清楚那個為主數據源(默認數據源) @Bean("dbPrimaryDataSource") @ConfigurationProperties(prefix = "spring.datasource.mysql-db") //讀取application.yml中的配置參數映射成為一個對象 public DataSource getDbDataSource(){ return DataSourceBuilder.create().build(); } @Primary @Bean("dbSqlSessionFactory") public SqlSessionFactory dbSqlSessionFactory(@Qualifier("dbPrimaryDataSource") DataSource dataSource, org.apache.ibatis.session.Configuration configuration) throws Exception { SqlSessionFactoryBean bean = new SqlSessionFactoryBean(); bean.setDataSource(dataSource); // mapper的xml文件位置,不然將報錯:Invalid bound statement (not found) // 注意路徑 bean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:mapper/*.xml")); // 解決xml字段到bean屬性名駝峰命名轉換失效的問題 // 要換成下面的第二種 // bean.setConfiguration(configuration); return bean.getObject(); } @Primary @Bean("dbSqlSessionTemplate") public SqlSessionTemplate db1SqlSessionTemplate(@Qualifier("dbSqlSessionFactory") SqlSessionFactory sqlSessionFactory){ return new SqlSessionTemplate(sqlSessionFactory); } // 讀取 yml 中的 mybatis 配置 @Bean @ConfigurationProperties(prefix = "mybatis.configuration") public org.apache.ibatis.session.Configuration globalConfiguration() { return new org.apache.ibatis.session.Configuration(); } } ``` 其他數據源, 多個就多個本文件 ``` import org.apache.ibatis.session.SqlSessionFactory; import org.mybatis.spring.SqlSessionFactoryBean; import org.mybatis.spring.SqlSessionTemplate; import org.mybatis.spring.annotation.MapperScan; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.boot.jdbc.DataSourceBuilder; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.core.io.support.PathMatchingResourcePatternResolver; import javax.sql.DataSource; /** * sql server 的視圖數據源連接配置 */ @Configuration @MapperScan(basePackages = "com.*.sqlserverDao", sqlSessionFactoryRef = "sqlserverDbSqlSessionFactory") public class SqlserverDbDataSourceConfig { @Bean("sqlserverDbDataSource") // 和 yml 對應 @ConfigurationProperties(prefix = "spring.datasource.sqlserver-db") public DataSource getSqlserverDataSource() { return DataSourceBuilder.create().build(); } @Bean("sqlserverDbSqlSessionFactory") public SqlSessionFactory db1SqlSessionFactory(@Qualifier("sqlserverDbDataSource") DataSource dataSource, org.apache.ibatis.session.Configuration configuration) throws Exception { SqlSessionFactoryBean bean = new SqlSessionFactoryBean(); bean.setDataSource(dataSource); // mapper的xml文件位置,不然將報錯:Invalid bound statement (not found) // 注意路徑 bean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:mapper/db2/*.xml")); // 解決xml字段到bean屬性名駝峰命名轉換失效的問題 // 因為只有主數據源使用了, 其他數據源這里是否有效未測試 // 要換成下面的第二種 // bean.setConfiguration(configuration); return bean.getObject(); } @Bean("sqlserverDbSqlSessionTemplate") public SqlSessionTemplate db1SqlSessionTemplate(@Qualifier("sqlserverDbSqlSessionFactory") SqlSessionFactory sqlSessionFactory) { return new SqlSessionTemplate(sqlSessionFactory); } } ``` yml 配置 ``` 單數據源時 spring: datasource: 這里配置數據庫相關 多數據源 spring: datasource: # 主數據源 mysql-db: # mysql-db 和 配置文件對應 這里配置數據庫相關 # 其他數據源 sqlserver-db: 這里配置數據庫相關 ``` 啟動類 ``` @MapperScan(basePackages = {"com.*.dao", "com.*.sqlserverDao"}) ``` 第二種 駝峰命名轉換失效, 除了使用讀取yml配置, 還可以使用 ``` @Primary @Bean("dbSqlSessionFactory") public SqlSessionFactory dbSqlSessionFactory(@Qualifier("dbPrimaryDataSource") DataSource dataSource) throws Exception { SqlSessionFactoryBean bean = new SqlSessionFactoryBean(); bean.setDataSource(dataSource); // mapper的xml文件位置,不然將報錯:Invalid bound statement (not found) // 注意路徑 bean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:mapper/*.xml")); // 解決xml字段到bean屬性名駝峰命名轉換失效的問題 SqlSessionFactory object = bean.getObject(); org.apache.ibatis.session.Configuration configuration = new org.apache.ibatis.session.Configuration(); if (object == null) { configuration = new org.apache.ibatis.session.Configuration(); } else { configuration = object.getConfiguration(); if (configuration == null) { configuration = new org.apache.ibatis.session.Configuration(); } } configuration.setMapUnderscoreToCamelCase(true); bean.setConfiguration(configuration); return bean.getObject(); } ```
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看