42.3 Spring Boot多數據源

(6)編寫測試類java

       咱們編寫一個簡單的類進行測試下,到底咱們的多數據源是否注入成功了。web

com.kfit.controller.TestController:spring

package com.kfit.controller;sql

 

import java.sql.ResultSet;數據庫

import java.sql.SQLException;app

 

import javax.sql.DataSource;ide

 

importorg.springframework.beans.factory.annotation.Autowired;測試

importorg.springframework.beans.factory.annotation.Qualifier;this

importorg.springframework.jdbc.core.JdbcTemplate;代理

importorg.springframework.jdbc.core.RowMapper;

importorg.springframework.web.bind.annotation.RequestMapping;

importorg.springframework.web.bind.annotation.RestController;

 

/**

 * 測試;

 * @author Angel(QQ:412887952)

 * @version v.0.1

 */

@RestController

publicclass TestController {

      

       //沒有指定爲主數據源.

       @Autowired

       private DataSource dataSource;

      

       @Autowired

       @Qualifier("ds1")

       private DataSource dataSource1;

      

       @Autowired

       @Qualifier("ds2")

       private DataSource dataSource2;

      

       private JdbcTemplate jdbcTemplate;

      

      

       @Autowired

       publicvoidsetJdbcTemplate(JdbcTemplate jdbcTemplate) {

              System.out.println("TestController.setJdbcTemplate()");

              jdbcTemplate.setDataSource(dataSource1);//設置dataSource

              this.jdbcTemplate = jdbcTemplate;

       }

 

       @RequestMapping("/get")

       public String get(){

              //觀察控制檯的打印信息.

              System.out.println(dataSource);

              return"ok";

       }

      

       @RequestMapping("/get1")

       public String get1(){

              //觀察控制檯的打印信息.

              System.out.println(dataSource1);

              return"ok.1";

       }

      

       @RequestMapping("/get2")

       public String get2(){

              //觀察控制檯的打印信息.

              System.out.println(dataSource2);

              return"ok.2";

       }

      

       @RequestMapping("/get3")

       public String get3(){

              //觀察控制檯的打印信息.

              JdbcTemplatejdbcTemplate = new JdbcTemplate(dataSource1);

              System.out.println(jdbcTemplate.getDataSource());

              System.out.println(jdbcTemplate);

               

              /*

           * Demo1只在test1中存在,test並無此數據庫;

           * 須要本身本身進行復制,否則會報錯:Table 'test1.demo1'doesn't exist

           */

              Stringsql = "select*from Demo1";

        jdbcTemplate.query(sql, newRowMapper<String>(){

 

            @Override

            public String mapRow(ResultSet rs, introwNum) throws SQLException {

                   System.out.println(rs.getLong("id")+"---"+rs.getString("name"));

               return"";

            }

 

        });

             

              return"ok.3";

       }

      

      

       @RequestMapping("/get4")

       public String get4(){

              //觀察控制檯的打印信息.

              System.out.println(jdbcTemplate.getDataSource());

              System.out.println(jdbcTemplate);

               

              /*

           * Demo1只在test1中存在,test並無此數據庫;

           * 須要本身本身進行復制,否則會報錯:Table 'test1.demo1'doesn't exist

           */

              Stringsql = "select*from Demo1";

       jdbcTemplate.query(sql, newRowMapper<String>(){

 

            @Override

            public String mapRow(ResultSet rs, introwNum) throws SQLException {

                   System.out.println(rs.getLong("id")+"---"+rs.getString("name"));

                return"";

            }

 

        });

             

              return"ok.4";

       }

}

       以上代碼在實際開發中,是絕對不能這麼編寫的,這裏只是爲了方便進行測試。

 

(7)測試

Run As 運行app.java進行測試:

訪問:

http://127.0.0.1:8080/get

http://127.0.0.1:8080/get1

http://127.0.0.1:8080/get2

http://127.0.0.1:8080/get3

http://127.0.0.1:8080/get4

查看控制檯的打印信息。

 

       然而咱們在項目中不必定須要直接使用dataSource的,你們都習慣使用JDBC的jdbcTemplate、Mybatis的sqlSessionTemplate,再或者就是以Mybatis爲例直接動態代理到Mapper接口上。

       那麼如何作到徹底動態數據源呢,以致於實現咱們能夠爲同一個Java類的不一樣方法,分別指定使用不一樣的數據源?下篇文章將爲你們進行講解,下期見!

相關文章
相關標籤/搜索