真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

springboot中mybatis多數(shù)據(jù)源的示例分析

這篇文章主要為大家展示了“spring boot中mybatis多數(shù)據(jù)源的示例分析”,內(nèi)容簡(jiǎn)而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“spring boot中mybatis多數(shù)據(jù)源的示例分析”這篇文章吧。

創(chuàng)新互聯(lián)公司是一家朝氣蓬勃的網(wǎng)站建設(shè)公司。公司專(zhuān)注于為企業(yè)提供信息化建設(shè)解決方案。從事網(wǎng)站開(kāi)發(fā),網(wǎng)站制作,網(wǎng)站設(shè)計(jì),網(wǎng)站模板,微信公眾號(hào)開(kāi)發(fā),軟件開(kāi)發(fā),小程序開(kāi)發(fā),10年建站對(duì)成都格柵板等多個(gè)行業(yè),擁有豐富設(shè)計(jì)經(jīng)驗(yàn)。

在我們的項(xiàng)目中不免會(huì)遇到需要在一個(gè)項(xiàng)目中使用多個(gè)數(shù)據(jù)源的問(wèn)題,像我在得到一個(gè)任務(wù)將用戶的聊天記錄進(jìn)行遷移的時(shí)候,就是用到了三個(gè)數(shù)據(jù)源,當(dāng)時(shí)使用的AOP的編程方式根據(jù)訪問(wèn)的方法的不同進(jìn)行動(dòng)態(tài)的切換數(shù)據(jù)源,覺(jué)得性能不太好,先在又新用到了一種使用方式,覺(jué)得不錯(cuò),記錄下來(lái)。

介紹一下DEMO項(xiàng)目,使用的spring boot集成mybatis,mybatis查詢(xún)數(shù)據(jù)庫(kù)是基于注解形式查詢(xún)的,目的查詢(xún)兩個(gè)數(shù)據(jù)庫(kù)test1和test2的用戶信息,并在控制臺(tái)打印。

1.pom文件


    
      org.springframework.boot
      spring-boot-starter-web
    
    
      org.mybatis.spring.boot
      mybatis-spring-boot-starter
      2.1.1
    
    
      com.alibaba
      druid-spring-boot-starter
      1.1.10
    
    
      MySQL
      mysql-connector-java
      runtime
      5.1.27
    
    
      org.springframework.boot
      spring-boot-starter-test
      test
      
        
          org.junit.vintage
          junit-vintage-engine
        
      
    
  

  
    
      
        src/main/java
        
          
            **/*.xml
          
        
      
      
        src/resources
      
    
    
      
        org.springframework.boot
        spring-boot-maven-plugin
      
    
  

其中添加了alibaba的druid的數(shù)據(jù)源代替了spring boot默認(rèn)的hikacp,注意mysql的驅(qū)動(dòng)的版本號(hào)要與自己所使用的mysql的版本號(hào)保持一致,其中build模塊里面的resources里面是為了防止spring boot 過(guò)濾掉src/main/java的XML文件,畢竟有的人喜歡mybatsi查詢(xún)數(shù)據(jù)庫(kù)的時(shí)候使用的是XML映射文件,不過(guò)我們本次使用的 是注解的形式 ,所以里面的內(nèi)容在項(xiàng)目中沒(méi)有用到。如果直接使用注解,可以忽略該內(nèi)容。

2.用戶類(lèi)

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方法省略...........
}

用戶類(lèi)沒(méi)有什么好說(shuō)的,就是基本的幾個(gè)屬性。

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

這里主要配置了兩個(gè)數(shù)據(jù)庫(kù)的訪問(wèn)屬性,注意兩個(gè)的區(qū)別為one何two的前綴不同,方便在下面使用spring boot的類(lèi)安全屬性的方式創(chuàng)建不同的數(shù)據(jù)源。

4.根據(jù)不同的前綴創(chuàng)建不同的數(shù)據(jù)源

@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();
  }
}

該類(lèi)位于主目錄的config目錄下面,使用@ConfigurationProperties注解表明對(duì)應(yīng)的DataSource創(chuàng)建的時(shí)候使用的配置文件的內(nèi)容。

5.在主目錄下面分別創(chuàng)建mapper1和mapper2包,在對(duì)應(yīng)的包下面創(chuàng)建對(duì)應(yīng)的數(shù)據(jù)層訪問(wèn)接口UserMapper1和UserMapper2,內(nèi)容都如下所示

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

這接口里面沒(méi)有什么好說(shuō)的就是一個(gè)簡(jiǎn)單的mytatis的基于注解的查詢(xún)所有用戶的接口。

6.在config包下面創(chuàng)建不同的配置類(lèi)MybatisConfigOne和MybatisConfigTwo兩個(gè)類(lèi)分別對(duì)應(yīng)去掃描mapper1和mapper2兩個(gè)路徑下面的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.測(cè)試

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

  }
}

測(cè)試結(jié)果:

spring boot中mybatis多數(shù)據(jù)源的示例分析

以上是“spring boot中mybatis多數(shù)據(jù)源的示例分析”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!


分享題目:springboot中mybatis多數(shù)據(jù)源的示例分析
分享鏈接:http://weahome.cn/article/jcjopd.html

其他資訊

在線咨詢(xún)

微信咨詢(xún)

電話咨詢(xún)

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部