場景
dynamic-datasource-spring-boot-starter實(shí)現(xiàn)動態(tài)數(shù)據(jù)源Mysql和Sqlserver:
dynamic-datasource-spring-boot-starter實(shí)現(xiàn)動態(tài)數(shù)據(jù)源Mysql和Sqlserver_dynamic-datasource-spring-boot-starter mysql sqlse-CSDN博客
SpringBoot中整合MybatisPlus快速實(shí)現(xiàn)Mysql增刪改查和條件構(gòu)造器:
https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/135646024
在上面的基礎(chǔ)上實(shí)現(xiàn)同時連接mysql和postgresql多數(shù)據(jù)源。
注:
博客:
霸道流氓氣質(zhì)-CSDN博客
實(shí)現(xiàn)
1、添加依賴
添加postgresql的依賴
??????? <dependency>
??????????? <groupId>org.postgresql</groupId>
??????????? <artifactId>postgresql</artifactId>
??????? </dependency>
添加mysql驅(qū)動
??????? <dependency>
??????????? <groupId>mysql</groupId>
??????????? <artifactId>mysql-connector-java</artifactId>
??????? </dependency>
添加多數(shù)據(jù)源dynamic-datasource的依賴
??????? <dependency>
??????????? <groupId>com.baomidou</groupId>
??????????? <artifactId>dynamic-datasource-spring-boot-starter</artifactId>
??????????? <version>3.2.1</version>
??????? </dependency>
添加mybatisplus的依賴
??????? <dependency>
??????????? <groupId>com.baomidou</groupId>
??????????? <artifactId>mybatis-plus-boot-starter</artifactId>
??????????? <version>3.5.1</version>
??????? </dependency>
完整pom依賴
??????? <dependency>
??????????? <groupId>org.springframework.boot</groupId>
??????????? <artifactId>spring-boot-starter-web</artifactId>
??????? </dependency>
??????? <dependency>
??????????? <groupId>org.projectlombok</groupId>
??????????? <artifactId>lombok</artifactId>
??????????? <optional>true</optional>
??????? </dependency>
??????? <!--MySQL驅(qū)動-->
??????? <dependency>
??????????? <groupId>mysql</groupId>
??????????? <artifactId>mysql-connector-java</artifactId>
??????? </dependency>
??????? <dependency>
??????????? <groupId>com.baomidou</groupId>
??????????? <artifactId>mybatis-plus-boot-starter</artifactId>
??????????? <version>3.5.1</version>
??????? </dependency>
??????? <dependency>
??????????? <groupId>org.springframework.boot</groupId>
??????????? <artifactId>spring-boot-starter-test</artifactId>
??????????? <scope>test</scope>
??????? </dependency>
??????? <dependency>
??????????? <groupId>org.postgresql</groupId>
??????????? <artifactId>postgresql</artifactId>
??????? </dependency>
??????? <dependency>
??????????? <groupId>com.baomidou</groupId>
??????????? <artifactId>dynamic-datasource-spring-boot-starter</artifactId>
??????????? <version>3.2.1</version>
??????? </dependency>
2、修改application.yml配置文件,添加多數(shù)據(jù)源的配置
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/test?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
????????? username: root
????????? password: 123456
????????? driver-class-name: com.mysql.jdbc.Driver
????????? dbcp2:
??????????? min-idle: 5??????????????????????????????? # 數(shù)據(jù)庫連接池的最小維持連接數(shù)
??????????? initial-size: 5??????????????????????????? # 初始化連接數(shù)
??????????? max-total: 5?????????????????????????????? # 最大連接數(shù)
??????????? max-wait-millis: 150?????????????????????? # 等待連接獲取的最大超時時間
??????? pg:
????????? url: jdbc:postgresql://127.0.0.1:5432/test
????????? username: postgres
????????? password: 123456
????????? driver-class-name: org.postgresql.Driver
????????? dbcp2:
??????????? min-idle: 5??????????????????????????????? # 數(shù)據(jù)庫連接池的最小維持連接數(shù)
??????????? initial-size: 5??????????????????????????? # 初始化連接數(shù)
??????????? max-total: 5?????????????????????????????? # 最大連接數(shù)
??????????? max-wait-millis: 150?????????????????????? # 等待連接獲取的最大超時時間
3、postgresql中新建表t_student
并新建實(shí)體類
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@TableName(value = "t_student")
public class Student implements Serializable {
??? private static final long serialVersionUID = -5514139686858156155L;
??? private Integer id;
??? private String name;
??? private Integer age;
??? private String address;
}
4、新建student的mapper
import com.badao.demo.config.DataSourceOfPG;
import com.badao.demo.entity.Student;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.springframework.stereotype.Repository;
@Repository
@DataSourceOfPG
public interface StudentMapper extends BaseMapper<Student> {
}
注意這里的@DataSourceOfPG是自定義注解,你也可以直接使用
@DS("pg")
這里的pg與上面yml中數(shù)據(jù)源名稱對應(yīng),為防止pg修改導(dǎo)致多處修改,這里的dynamic datasource的 @DS注解使用
自定義注解實(shí)現(xiàn)。
import com.baomidou.dynamic.datasource.annotation.DS;
import java.lang.annotation.*;
@Target({ElementType.TYPE, ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@DS("pg")
public @interface DataSourceOfPG {
???
}
關(guān)于自定義注解可以參考其他文章
Java中通過反射+自定義注解判斷對象中部分屬性是否為空,返回為空字段的名稱或自定義含義:
Java中通過反射+自定義注解判斷對象中部分屬性是否為空,返回為空字段的名稱或自定義含義_java判斷空值注解-CSDN博客
SpringBoot中通過自定義Jackson注解實(shí)現(xiàn)接口返回數(shù)據(jù)脫敏:
SpringBoot中通過自定義Jackson注解實(shí)現(xiàn)接口返回數(shù)據(jù)脫敏_springboot 自定義 jacksonfilter-CSDN博客
user表參考上面博客
實(shí)體類
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@TableName(value = "t_user")
public class User implements Serializable {
??? private static final long serialVersionUID = -5514139686858156155L;
??? private Integer id;
??? private Integer userId;
??? private String name;
??? private Integer age;
??? @TableField(exist = false)
??? private String address;
}
mapper為
@Repository
public interface UserMapper extends BaseMapper<User> {
}
5、編寫單元測試測試從兩個數(shù)據(jù)源中獲取數(shù)據(jù)
@SpringBootTest
class PGTest {
??? @Autowired
??? private StudentMapper studentMapper;
??? @Autowired
??? private UserMapper userMapper;
??? @Test
??? void test1() {
??????? List<Student> students = studentMapper.selectList(new LambdaQueryWrapper<>());
??????? System.out.println(students);
??????? List<User> users = userMapper.selectList(new LambdaQueryWrapper<>());
??????? System.out.println(users);
??? }
}
單元測試運(yùn)行結(jié)果文章來源:http://www.zghlxwxcb.cn/news/detail-812169.html
文章來源地址http://www.zghlxwxcb.cn/news/detail-812169.html
到了這里,關(guān)于SpringBoot+MybatisPlus+dynamic-datasources實(shí)現(xiàn)連接Postgresql和mysql多數(shù)據(jù)源的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!