最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

如何在Java SpringBoot項目中配置動態(tài)數(shù)據(jù)源你知道嗎

 更新時間:2021年09月06日 10:56:24   作者:t梧桐樹t  
這篇文章主要介紹了SpringBoot如何在運行時動態(tài)添加數(shù)據(jù)源,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下

在我們工作中涉及到一些場景需要我們配置多數(shù)據(jù)源的操作,之前來說我們配置數(shù)據(jù)源需要寫繁瑣的配置類來配置我們的數(shù)據(jù)源,哪個是默認數(shù)據(jù)源等等,而現(xiàn)在我們可以使用“苞米豆”為我們提供的提供的第三方工具,只需要簡單配置就可以實現(xiàn)多數(shù)據(jù)源之間的靈活切換了!

首先需要引入第三方依賴

<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>dynamic-datasource-spring-boot-starter</artifactId>
    <version>3.3.5</version>
</dependency>

只需要在配置文件中按照如下配置

spring:
  datasource:
    dynamic:
      primary: master #設置默認的數(shù)據(jù)源或者數(shù)據(jù)源組,默認值即為master
      strict: false #嚴格匹配數(shù)據(jù)源,默認false. true未匹配到指定數(shù)據(jù)源時拋異常,false使用默認數(shù)據(jù)源
      datasource:
        master: # 名稱可以自己定義
          url: jdbc:mysql://localhost:3306/students?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=GMT%2B8
          username: root
          password: root
          driver-class-name: com.mysql.cj.jdbc.Driver
        slave: # 名稱可以自己定義
          url: jdbc:mysql://localhost:3306/teachers?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=GMT%2B8
          username: root
          password: root
          driver-class-name: com.mysql.cj.jdbc.Driver

創(chuàng)建如下兩個數(shù)據(jù)庫

entity

@Data
public class Student implements Serializable {
    /**
     * 主鍵
     */
    private Integer id;
    /**
     * 姓名
     */
    private String name;
    /**
     * 年齡
     */
    private Integer age;
    /**
     * 性別
     */
    private String sex;
    private static final long serialVersionUID = 1L;
}
@Data
public class Teacher implements Serializable {
    /**
     * 主鍵
     */
    private Integer id;
    /**
     * 姓名
     */
    private String name;
    /**
     * 年齡
     */
    private Integer age;
    /**
     * 學科
     */
    private String subject;
    private static final long serialVersionUID = 1L;
}

mapper.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.example.demo.mysql.mapper.StudentDao">
    <select id="findAllStudent" resultType="com.example.demo.entity.Student">
        select *
        from student;
    </select>
</mapper>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.example.demo.mysql.mapper.TeacherDao">
    <select id="findAllTeacher" resultType="com.example.demo.entity.Teacher">
        select *
        from teacher;
    </select>
</mapper>

mapper層

@Mapper
public interface StudentDao {
    List<Student> findAllStudent();
}
@Mapper
public interface TeacherDao {
    List<Teacher> findAllTeacher();
}

Service層

@Service
public class StudentServiceImpl implements StudentService {
    @Autowired
    private StudentDao studentDao;
    @Override
    public List<Student> findAllStudent() {
        return studentDao.findAllStudent();
    }
@Service
@DS("slave")
public class TeacherServiceImpl implements TeacherService {
    @Autowired
    private TeacherDao teacherDao;
    @Override
    public List<Teacher> findAllTeacher() {
        return teacherDao.findAllTeacher();
    }
}

下面是兩個測試方法

@RestController
public class TestController {
    @Autowired
    private StudentService studentService;
    @Autowired
    private TeacherService teacherService;
    /**
     * 查詢所有學生信息
     *
     * @return Student
     */
    @GetMapping("/test/1")
    public List<Student> findAllStudent() {
        return studentService.findAllStudent();
    }
    /**
     * 查詢所有教師信息
     *
     * @return Teacher
     */
    @GetMapping("/test/2")
    public List<Teacher> findAllTeacher() {
        return teacherService.findAllTeacher();
    }
}

需要注意的一點是mapper和mapper.xml路徑需一致否自會導致編譯后找不到xml文件

下面可以來看一下測試結果:

查詢學生:

查詢老師:

此時不管是學生還是老師的信息是都可以查詢出來的,這就全靠TeacherServiceImpl中使用的DS(“slave”)指定了數(shù)據(jù)源,假如說我們把注解去掉再來一次試試,可以看到請求報錯提示students庫中沒有teacher這個表,所以說在我們沒有指定數(shù)據(jù)源的時候,它是會自動去匹配默認的數(shù)據(jù)源來查詢!

相關文章

  • java如何利用FastJSON、Gson、Jackson三種Json格式工具自定義時間序列化

    java如何利用FastJSON、Gson、Jackson三種Json格式工具自定義時間序列化

    本篇文章主要介紹了java如何利用FastJSON、Gson、Jackson三種Json格式工具自定義時間序列化,具有一定的參考價值,有興趣的可以了解一下
    2017-08-08
  • java?Object類中常用API分享

    java?Object類中常用API分享

    Object類是java中所有類的祖宗類,因此java中所有的類的對象都可以直接使用Object類中提供的一些方法,下面小編為大家整理了Object類中常用API,希望對大家有所幫助
    2023-10-10
  • 學習在一臺新電腦上配置JAVA開發(fā)環(huán)境

    學習在一臺新電腦上配置JAVA開發(fā)環(huán)境

    本文主要介紹了如何在一臺新電腦上配置JAVA開發(fā)環(huán)境,每一個步驟都有對應的截圖和文字說明,需要的朋友可以參考下
    2015-07-07
  • 詳解Java9新特性中的模塊化與反射機制

    詳解Java9新特性中的模塊化與反射機制

    Java9中的一個重大變化就是引入了模塊化系統(tǒng),這個系統(tǒng)使得Java應用程序的構建、發(fā)布和部署更加具有可控性和可重用性,與此同時,Java9還改進了反射機制,讓它與模塊化系統(tǒng)更好地配合,本文通過代碼示例介紹的非常詳細,需要的朋友可以參考下
    2023-06-06
  • Windows下使用Graalvm將Springboot應用編譯成exe大大提高啟動和運行效率(推薦)

    Windows下使用Graalvm將Springboot應用編譯成exe大大提高啟動和運行效率(推薦)

    這篇文章主要介紹了Windows下使用Graalvm將Springboot應用編譯成exe大大提高啟動和運行效率,本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-02-02
  • MybatisPlus如何自動生成映射文件

    MybatisPlus如何自動生成映射文件

    這篇文章主要介紹了MybatisPlus如何自動生成映射文件,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-01-01
  • Java的JSTL標簽庫詳解

    Java的JSTL標簽庫詳解

    JSTL包含用于編寫和開發(fā)JSP頁面的一組標準標簽,它可以為用戶提供一個無腳本環(huán)境。在此環(huán)境中,用戶可以使用標簽編寫代碼,而無須使用Java腳本
    2023-05-05
  • mac 安裝java1.8的過程詳解

    mac 安裝java1.8的過程詳解

    這篇文章主要介紹了mac 安裝java1.8,包括下載過程及配置環(huán)境相關知識介紹,本文結合實例代碼介紹的非常詳細,需要的朋友可以參考下
    2023-09-09
  • 如何在Java中使用支付寶SDK來獲取用戶的OpenID

    如何在Java中使用支付寶SDK來獲取用戶的OpenID

    在支付寶開放平臺中,獲取用戶的OpenID通常是在用戶授權后通過支付寶的OAuth 2.0授權流程實現(xiàn)的,以下是一個基本的步驟說明,以及如何在Java中使用支付寶SDK來獲取用戶的OpenID
    2024-08-08
  • Spring security 如何開放 Swagger 訪問權限

    Spring security 如何開放 Swagger 訪問權限

    這篇文章主要介紹了Spring security 如何開放 Swagger 訪問權限操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-09-09

最新評論

大同县| 米林县| 买车| 北票市| 平武县| 丰都县| 望都县| 伊宁县| 阳高县| 车致| 鸡西市| 阳谷县| 陇南市| 昌都县| 扶风县| 恩平市| 林州市| 高阳县| 天祝| 长治县| 雷州市| 肇东市| 黑山县| 河津市| 监利县| 永兴县| 云浮市| 乌拉特前旗| 赣榆县| 江安县| 仁寿县| 山阳县| 公主岭市| 古田县| 上杭县| 义马市| 孝昌县| 河间市| 锦屏县| 扎赉特旗| 墨竹工卡县|