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

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

 更新時間:2021年09月06日 10:56:24   作者:t梧桐樹t  
這篇文章主要介紹了SpringBoot如何在運行時動態(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();
    }
}

需要注意的一點是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如何利用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
  • 學(xué)習(xí)在一臺新電腦上配置JAVA開發(fā)環(huán)境

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

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

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

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

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

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

    MybatisPlus如何自動生成映射文件

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

    Java的JSTL標(biāo)簽庫詳解

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

    mac 安裝java1.8的過程詳解

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

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

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

    Spring security 如何開放 Swagger 訪問權(quán)限

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

最新評論

宁远县| 安远县| 罗源县| 屯昌县| 桦甸市| 靖州| 内江市| 达州市| 五家渠市| 会泽县| 黔江区| 定远县| 平湖市| 资源县| 登封市| 红桥区| 平乡县| 屯门区| 嘉祥县| 桃源县| 德化县| 垦利县| 莱州市| 青州市| 南涧| 延川县| 巴马| 旬邑县| 穆棱市| 昌平区| 堆龙德庆县| 堆龙德庆县| 尉犁县| 商河县| 临夏市| 民县| 奉化市| 凭祥市| 宜宾县| 抚顺市| 福贡县|