springboot配置双数据源(mysql+mongodb)

1、配置mysql数据源

当一个数据源正常配置即可

2、在已有mysql数据源的基础上配置mongodb

pom.xml  添加

<dependency> 
   <groupId>org.springframework.boot</groupId> 
   <artifactId>spring-boot-starter-data-mongodb</artifactId> 
    <version>2.4.11</version> 
</dependency>

yam文件

spring:
  datasource:
    type: com.alibaba.druid.pool.DruidDataSource
    url: jdbc:mysql://localhost:3306/service_center?useUnicode=true&autoReconnect=true&characterEncoding=UTF-8&allowMultiQueries=true
    username: root
    password: 12314
    driver-class-name: com.mysql.cj.jdbc.Driver
  jackson:
    date-format: yyyy-MM-dd HH:mm:ss
    time-zone: GMT+8
  data:
    mongodb:
      uri: mongodb://localhost:27017/service_center

代码

import lombok.Data;
import org.springframework.data.mongodb.core.mapping.Document;
import org.springframework.data.mongodb.core.mapping.Field;
import javax.persistence.Id;

@Document("users")
@Data
public class Users {
    @Id //自动生成的主键ID 主键 不可重复 自带索引
    private String _id;
    //年龄
    @Field("age")
    private Integer age;
    //姓名
    @Field("name")
    private String name;
    //租户id
    @Field("tenant_id")
    private String tenantId;
}
@Component
public class UserServices {
   
    @Resource
    private TenantService tenantService; //mysql的数据源
    @Resource
    private MongoTemplate mongoTemplate; //mongodb的数据源

    /**
     * 描  述:更新services集合中的tenantId字段
     */
    public void updateTenantId() {
        //查询mongodb数据源的所有用户集合
        List<Users> userList = mongoTemplate.findAll(Users.class);
        for (Usersitem : userList) {
            //通过用户id去mysql的数据源查询用户所属的租户信息
            Tenant vo = tenantService.getTenantByUserId(item.getId() + "");
            Update update = new Update();
            if (vo != null ) {
                update.set("tenant_id", vo.getId());
                //把租户id更新到用户集合中
mongoTemplate.updateFirst(Query.query(Criteria.where("id").is(item.get_id())), update, Users.class);
            }
        }
    }
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值