欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

在我們工作中涉及到一些場景需要我們配置多數(shù)據(jù)源的操作,之前來說我們配置數(shù)據(jù)源需要寫繁瑣的配置類來配置我們的數(shù)據(jù)源,哪個是默認(rèn)數(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è)置默認(rèn)的數(shù)據(jù)源或者數(shù)據(jù)源組,默認(rèn)值即為master
      strict: false #嚴(yán)格匹配數(shù)據(jù)源,默認(rèn)false. true未匹配到指定數(shù)據(jù)源時拋異常,false使用默認(rèn)數(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;
    /**
     * 學(xué)科
     */
    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;
    /**
     * 查詢所有學(xué)生信息
     *
     * @return Student
     */
    @GetMapping("/test/1")
    public List<Student> findAllStudent() {
        return studentService.findAllStudent();
    }
    /**
     * 查詢所有教師信息
     *
     * @return Teacher
     */
    @GetMapping("/test/2")
    public List<Teacher> findAllTeacher() {
        return teacherService.findAllTeacher();
    }
}

需要注意的一點(diǎn)是mapper和mapper.xml路徑需一致否自會導(dǎo)致編譯后找不到xml文件

下面可以來看一下測試結(jié)果:

查詢學(xué)生:

查詢老師:

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

相關(guān)文章

  • Java?@Transactional指定回滾條件

    Java?@Transactional指定回滾條件

    這篇文章主要介紹了Java?@Transactional指定回滾條件,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價值,需要的朋友可以參考一下
    2022-08-08
  • Java 中的抽象介紹

    Java 中的抽象介紹

    這篇文章主要介紹了Java 中的抽象,數(shù)據(jù)抽象是一種僅向用戶顯示基本細(xì)節(jié)的屬性。不向用戶顯示瑣碎或非必需的單元,下面文章Java抽象詳細(xì)內(nèi)容,需要的朋友可以參考一下
    2021-12-12
  • java經(jīng)典問題:連個字符串互為回環(huán)變位

    java經(jīng)典問題:連個字符串互為回環(huán)變位

    連個字符串互為回環(huán)變位經(jīng)常出現(xiàn)在java程序員面試中,這個是考驗程序員的解題思路和方法的最經(jīng)典的一題,小編為大家詳細(xì)分析一下,一起來學(xué)習(xí)吧。
    2017-11-11
  • 教你怎么用Java回溯算法解數(shù)獨(dú)

    教你怎么用Java回溯算法解數(shù)獨(dú)

    一直不太會數(shù)獨(dú)問題,這次下決定搞明白,所以整理了本篇文章,文中有非常詳細(xì)的代碼示例,對不會算法的小伙伴們很有幫助,需要的朋友可以參考下
    2021-06-06
  • 零基礎(chǔ)寫Java知乎爬蟲之抓取知乎答案

    零基礎(chǔ)寫Java知乎爬蟲之抓取知乎答案

    上篇文章我們已經(jīng)能把知乎的問題抓出來了,但是答案還木有抓出來。這一回合,我們就連著把答案也一起從網(wǎng)站中摳出來=。=
    2014-11-11
  • java9學(xué)習(xí)筆記之模塊化詳解

    java9學(xué)習(xí)筆記之模塊化詳解

    Java 9中最重要的功能,毫無疑問就是模塊化(Module),下面這篇文章主要給大家介紹了關(guān)于java9學(xué)習(xí)筆記之模塊化的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起看看吧。
    2018-04-04
  • 如何將IDEA打成jar包并在windows后臺運(yùn)行

    如何將IDEA打成jar包并在windows后臺運(yùn)行

    在本篇文章里小編給大家分享的是關(guān)于如何將IDEA打成jar包并在windows后臺運(yùn)行知識點(diǎn),需要的朋友們可以學(xué)習(xí)參考下。
    2019-08-08
  • Spring中11個最常用的擴(kuò)展點(diǎn)總結(jié),你知道幾個

    Spring中11個最常用的擴(kuò)展點(diǎn)總結(jié),你知道幾個

    我們知道IOC(控制反轉(zhuǎn))和AOP(面向切面編程)是spring的基石,除此之外spring的擴(kuò)展能力非常強(qiáng),下面這篇文章主要給大家介紹了關(guān)于Spring中11個最常用的擴(kuò)展點(diǎn)的相關(guān)資料,需要的朋友可以參考下
    2022-12-12
  • 基于java涉及父子類的異常詳解

    基于java涉及父子類的異常詳解

    下面小編就為大家?guī)硪黄趈ava涉及父子類的異常詳解。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-09-09
  • Java基于socket實現(xiàn)的客戶端和服務(wù)端通信功能完整實例

    Java基于socket實現(xiàn)的客戶端和服務(wù)端通信功能完整實例

    這篇文章主要介紹了Java基于socket實現(xiàn)的客戶端和服務(wù)端通信功能,結(jié)合完整實例形式分析了Java使用socket建立客戶端與服務(wù)器端連接與通信功能,需要的朋友可以參考下
    2018-05-05

最新評論