亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

spring boot中mybatis多數據源的示例分析

發布時間:2021-07-28 14:27:13 來源:億速云 閱讀:234 作者:小新 欄目:編程語言

這篇文章主要為大家展示了“spring boot中mybatis多數據源的示例分析”,內容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領大家一起研究并學習一下“spring boot中mybatis多數據源的示例分析”這篇文章吧。

在我們的項目中不免會遇到需要在一個項目中使用多個數據源的問題,像我在得到一個任務將用戶的聊天記錄進行遷移的時候,就是用到了三個數據源,當時使用的AOP的編程方式根據訪問的方法的不同進行動態的切換數據源,覺得性能不太好,先在又新用到了一種使用方式,覺得不錯,記錄下來。

介紹一下DEMO項目,使用的spring boot集成mybatis,mybatis查詢數據庫是基于注解形式查詢的,目的查詢兩個數據庫test1和test2的用戶信息,并在控制臺打印。

1.pom文件

<dependencies>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
      <groupId>org.mybatis.spring.boot</groupId>
      <artifactId>mybatis-spring-boot-starter</artifactId>
      <version>2.1.1</version>
    </dependency>
    <dependency>
      <groupId>com.alibaba</groupId>
      <artifactId>druid-spring-boot-starter</artifactId>
      <version>1.1.10</version>
    </dependency>
    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <scope>runtime</scope>
      <version>5.1.27</version>
    </dependency>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-test</artifactId>
      <scope>test</scope>
      <exclusions>
        <exclusion>
          <groupId>org.junit.vintage</groupId>
          <artifactId>junit-vintage-engine</artifactId>
        </exclusion>
      </exclusions>
    </dependency>
  </dependencies>

  <build>
    <resources>
      <resource>
        <directory>src/main/java</directory>
        <includes>
          <include>
            **/*.xml
          </include>
        </includes>
      </resource>
      <resource>
        <directory>src/resources</directory>
      </resource>
    </resources>
    <plugins>
      <plugin>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
      </plugin>
    </plugins>
  </build>

其中添加了alibaba的druid的數據源代替了spring boot默認的hikacp,注意mysql的驅動的版本號要與自己所使用的mysql的版本號保持一致,其中build模塊里面的resources里面是為了防止spring boot 過濾掉src/main/java的XML文件,畢竟有的人喜歡mybatsi查詢數據庫的時候使用的是XML映射文件,不過我們本次使用的 是注解的形式 ,所以<resources>里面的內容在項目中沒有用到。如果直接使用注解,可以忽略該內容。

2.用戶類

public class User {
  public Integer id;
  public String name;
  public String address;

  @Override
  public String toString() {
    return "User{" +
        "id=" + id +
        ", name='" + name + '\'' +
        ", address='" + address + '\'' +
        '}';
  }
    //get set方法省略...........
}

用戶類沒有什么好說的,就是基本的幾個屬性。

3.application.properties文件配置

spring.datasource.one.type=com.alibaba.druid.pool.DruidDataSource
spring.datasource.one.username=root
spring.datasource.one.password=123456
spring.datasource.one.url=jdbc:mysql://localhost:3306/test1

spring.datasource.two.type=com.alibaba.druid.pool.DruidDataSource
spring.datasource.two.username=root
spring.datasource.two.password=123456
spring.datasource.two.url=jdbc:mysql://localhost:3306/test2

這里主要配置了兩個數據庫的訪問屬性,注意兩個的區別為one何two的前綴不同,方便在下面使用spring boot的類安全屬性的方式創建不同的數據源。

4.根據不同的前綴創建不同的數據源

@Configuration
public class DataSourceConfig {
  @Bean
  @ConfigurationProperties(prefix = "spring.datasource.one")
  public DataSource dsOne(){
    return DruidDataSourceBuilder.create().build();
  }
  @Bean
  @ConfigurationProperties(prefix = "spring.datasource.two")
  public DataSource dsTwo(){
    return DruidDataSourceBuilder.create().build();
  }
}

該類位于主目錄的config目錄下面,使用@ConfigurationProperties注解表明對應的DataSource創建的時候使用的配置文件的內容。

5.在主目錄下面分別創建mapper1和mapper2包,在對應的包下面創建對應的數據層訪問接口UserMapper1和UserMapper2,內容都如下所示

@Mapper
public interface UserMapper1 {
  @Select("select * from users")
  List<User> getAllUser();
}

這接口里面沒有什么好說的就是一個簡單的mytatis的基于注解的查詢所有用戶的接口。

6.在config包下面創建不同的配置類MybatisConfigOne和MybatisConfigTwo兩個類分別對應去掃描mapper1和mapper2兩個路徑下面的dao層接口。

@Configuration
@MapperScan(basePackages = "com.hopec.mybatis.mapper1",sqlSessionFactoryRef = "sqlSessionFactory1",
    sqlSessionTemplateRef = "sqlSessionTemplate1")
public class MybatisConfigOne {
  @Autowired
  @Qualifier("dsOne")
  DataSource ds1;
@Bean
  SqlSessionFactory sqlSessionFactory1(){
    SqlSessionFactoryBean bean = new SqlSessionFactoryBean();
    bean.setDataSource(ds1);
    try {
      return bean.getObject();
    } catch (Exception e) {
      e.printStackTrace();
    }
    return null;
  }
  @Bean
  SqlSessionTemplate sqlSessionTemplate1(){
    return new SqlSessionTemplate(sqlSessionFactory1());
  }
}
public class MybatisConfigTwo {
  @Autowired
  @Qualifier("dsTwo")
  DataSource ds2;
@Bean
  SqlSessionFactory sqlSessionFactory2(){
    SqlSessionFactoryBean bean = new SqlSessionFactoryBean();
    bean.setDataSource(ds2);
    try {
      return bean.getObject();
    } catch (Exception e) {
      e.printStackTrace();
    }
    return null;
  }
  @Bean
  SqlSessionTemplate sqlSessionTemplate2(){
    return new SqlSessionTemplate(sqlSessionFactory2());
  }
}

7.測試

@SpringBootTest
class MybatisApplicationTests {
  @Autowired
  UserMapper1 userMapper1;
  @Autowired
  UserMapper2 userMapper2;
  @Test
  void contextLoads() {
    List<User> users = userMapper1.getAllUser();
    System.out.println(users);
    List<User> allUser = userMapper2.getAllUser();
    System.out.println(allUser);

  }
}

測試結果:

spring boot中mybatis多數據源的示例分析

以上是“spring boot中mybatis多數據源的示例分析”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

麦盖提县| 新和县| 凤山市| 青岛市| 广昌县| 东乡县| 万年县| 报价| 贞丰县| 温州市| 台南市| 博罗县| 富阳市| 祁阳县| 乌什县| 巨鹿县| 嘉定区| 乌兰察布市| 贡嘎县| 长春市| 永春县| 确山县| 宜君县| 蓝田县| 临沧市| 丹凤县| 昂仁县| 盐津县| 桂东县| 鄢陵县| 芜湖市| 昌图县| 张家川| 房产| 大埔区| 金秀| 罗田县| 基隆市| 张家界市| 东乡| 淮北市|