SpringBoot集成SpringDataJPA实现多数据源

    xiaoxiao2025-03-03  34

    目录

    SpringBoot集成SpringDataJPA实现多数据源项目环境操作步骤数据库准备主数据库从数据库 配置修改编写配置类运行 项目代码

    SpringBoot集成SpringDataJPA实现多数据源

    项目环境

    IDEA 2019.1SpringBoot 2.1.5Gradle 4.10

    操作步骤

    数据库准备

    主数据库

    主数据库:microservice表名:tb_student表结构如下: 字段名类型长度是否主键描述student_idint11是主键值student_ageint11否年龄student_genderint2否性别student_namevarchar40否学生名

    从数据库

    主数据库:microservice2表名:tb_user表结构如下 字段名类型长度是否主键描述idint11是主键值user_namevarchar40否用户名passwordvarchar40否密码

    配置修改

    在application.yml中增加两个数据源,分别为master和slave

    server: port: 8880 spring: datasource: master: type: com.alibaba.druid.pool.DruidDataSource url: jdbc:mysql://127.0.0.1:3306/microservice?useUnicode=true&characterEncoding=utf-8&useSSL=true username : root password : xda265856 driverClassName : com.mysql.jdbc.Driver slave: type: com.alibaba.druid.pool.DruidDataSource url: jdbc:mysql://127.0.0.1:3306/microservice2?useUnicode=true&characterEncoding=utf-8&useSSL=true username: root password: xda265856 driverClassName: com.mysql.jdbc.Driver jpa: hibernate: naming: physical-strategy: org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl ddl-auto: update show-sql: true

    编写配置类

    项目结构如下图所示:

    关于注入配置的代码部分就不贴上来了,没多大意义,最后会补充上GitHub的地址

    运行

    编写测试用controller,用来从两个数据源中读取数据,并响应:

    @Controller public class MultiSouceController { @Autowired private StudentRepository studentRepository; @Autowired private UserRepository userRepository; @ResponseBody @RequestMapping(value = "/datasouces/data", method = {RequestMethod.GET}) public Map<String,Object> updateStudent(){ Map<String,Object> allData = new HashMap<>(); List<Student> students = studentRepository.findAll(); List<User> users = userRepository.findAll(); allData.put("students",students); allData.put("users",users); return allData; } }

    运行效果如下:

    项目代码

    github:点击这里
    最新回复(0)