引入spring-data 依赖, 注意引入版本, 不同版本对应的api方法不一样

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

数据源配置,多个数据源

spring:mongodb:primary:uri: mongodb://username1:password1@localost:27018/db1secondary:uri: mongodb://username2:password2@localost:27018/db2thirdly:      uri: mongodb://username3:password3@localost:27018/db3

配置类

@Data
public abstract class AbstractMongoConfig {private String uri;abstract public MongoTemplate getMongoTemplate();public SimpleMongoClientDatabaseFactory mongodbFactory() {return new SimpleMongoClientDatabaseFactory(uri);}
}
@Configuration
@ConfigurationProperties(prefix = "spring.data.mongodb.primary")
public class PrimaryMongoConfig extends AbstractMongoConfig {@Primary   //默认会注入此数据源的Template@Bean(name = "primaryMongoTemplate")@Overridepublic MongoTemplate getMongoTemplate() {return new MongoTemplate(mongodbFactory());}@Bean(name = "primaryGridFsTemplate") //用于gridfs查询public GridFsTemplate getGridFsTemplate(MongoConverter converter) {return new GridFsTemplate(mongodbFactory(), converter, "fs");}@Bean(name = "primaryGridFsBucket") //用于gridfs文件下载public GridFSBucket getGridFSBucket() {return GridFSBuckets.create(mongodbFactory().getMongoDatabase(), "fs");}
}
@Configuration
@ConfigurationProperties(prefix = "spring.data.mongodb.secondary")
public class SecondaryMongoConfig extends AbstractMongoConfig {@Bean(name = "secondaryMongoTemplate")@Overridepublic MongoTemplate getMongoTemplate() {return new MongoTemplate(mongodbFactory());}@Bean(name = "secondaryGridFsTemplate") //用于gridfs查询public GridFsTemplate getGridFsTemplate(MongoConverter converter) {return new GridFsTemplate(mongodbFactory(), converter, "fs");}@Bean(name = "secondaryGridFsBucket") //用于gridfs文件下载public GridFSBucket getGridFSBucket() {return GridFSBuckets.create(mongodbFactory().getMongoDatabase(), "fs");}
}
@Configuration
@ConfigurationProperties(prefix = "spring.data.mongodb.thirdly")
public class ThirdlyMongoConfig extends AbstractMongoConfig {@Bean(name = "thirdlyMongoTemplate")@Overridepublic MongoTemplate getMongoTemplate() {return new MongoTemplate(mongodbFactory());}@Bean(name = "thirdlyGridFsTemplate") //用于gridfs查询public GridFsTemplate getGridFsTemplate(MongoConverter converter) {return new GridFsTemplate(mongodbFactory(), converter, "fs");}@Bean(name = "thirdlyGridFsBucket") //用于gridfs文件下载public GridFSBucket getGridFSBucket() {return GridFSBuckets.create(mongodbFactory().getMongoDatabase(), "fs");}
}

注入MongoTemplate 进行增删改查

 @Autowiredprivate MongoTemplate mongoTemplate;@Autowired@Qualifier("secondaryMongoTemplate")private MongoTemplate template2;@Autowired@Qualifier("thirdlyMongoTemplate")private MongoTemplate template3;@Resource@Qualifier("primaryGridFsTemplate")private GridFsTemplate primaryGridFsTemplate;@Resource@Qualifier("primaryGridFsBucket")private GridFSBucket primaryGridFsBucket;public HistoryDeleteVo deleteOne(HistoryDeleteRequest request) {String id = request.getId();if (StringUtils.isEmpty(id)) {throw new EsException("id不能为空");}History one = mongoTemplate.findById(id, History.class);if (one == null) {throw new EsException("要删除的数据不存在");}mongoTemplate.remove(one);HistoryDeleteVo vo = new HistoryDeleteVo();vo.setSuccess(true);vo.setDelete_count(1);return vo;}public History getHistoryById(String id) {Query query = Query.query(Criteria.where("id").is(id));History history = mongoTemplate.findOne(query, History.class);if (history == null) {throw new EsException("mongo中不存在该历史记录");}return history;}//查询gridFs是的文件public void testQuery() {String filename1 = "CN202110428069.4";Query query1 = Query.query(Criteria.where("filename").regex("^" + filename1 + "."));GridFSFile one = primaryGridFsTemplate.findOne(query1);if (one != null) {//打印gridFS的idSystem.out.println(one.getObjectId());}}//下载gridFs中的文件public void downFile() {//根据id查询文件GridFSFile gridFSFile = primaryGridFsTemplate.findOne(Query.query(Criteria.where("_id").is("623d93f44c63117424ce02e0")));if (gridFSFile != null) {//打开一个下载流对象GridFSDownloadStream gridFSDownloadStream = primaryGridFsBucket.openDownloadStream(gridFSFile.getObjectId());//创建GridFsResource对象,获取流GridFsResource gridFsResource = new GridFsResource(gridFSFile, gridFSDownloadStream);//从流中获取数据String content = IOUtils.toString(gridFsResource.getInputStream(), StandardCharsets.UTF_8);System.out.println(content);}}

mongodb多数据源配置相关推荐

  1. Tomcat 6 部署工程总结,使用JNDI数据源配置

    工程需要用JNDI数据源方式部署到tomcat,参考网上文章后,经过配置测试,摸索出来了.     环境说明: 数据库:Oracle9i Web服务器:tomcat-6.0.33 tomcat启动方式 ...

  2. Spring多数据源配置和使用

    Spring多数据源配置和使用 1.配置信息 <!--==============================bpt_mobdb数据库配置========================== ...

  3. 企业分布式微服务云SpringCloud SpringBoot mybatis (九)Spring Boot多数据源配置与使用(JdbcTemplate支持)...

    之前在介绍使用JdbcTemplate和Spring-data-jpa时,都使用了单数据源.在单数据源的情况下,Spring Boot的配置非常简单,只需要在application.propertie ...

  4. SpringBoot--Druid多数据源配置

    SpringBootDruid多数据源Atomikos 多数据源 导入依赖 <!-- MySql驱动 --> <dependency> <groupId>mysql ...

  5. Spring 数据源配置与应用

    Spring 数据源配置与应用 Spring对数据库操作都依赖数据源. Spring有默认的数据源实现org.springframework.jdbc.datasource.DriverManager ...

  6. c3p0数据源配置抛出Could not load driverClass com.mysql.jdbc.Driver的解决方案

    c3p0数据源配置抛出Could not load driverClass com.mysql.jdbc.Driver的解决方案 参考文章: (1)c3p0数据源配置抛出Could not load ...

  7. mysql druid 多数据源_SpringBoot使用阿里数据库连接池Druid以及多数据源配置

    SpringBoot使用阿里数据库连接池Druid以及多数据源配置 引入依赖 com.alibaba druid 1.0.29 数据源配置 1.数据源 #master数据源 spring.dataso ...

  8. Spring Boot 2.x基础教程:MyBatis的多数据源配置

    点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 前两天,我们已经介绍了关于JdbcTemplate的多数 ...

  9. Spring Boot 2.x基础教程:Spring Data JPA的多数据源配置

    点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 上一篇我们介绍了在使用JdbcTemplate来做数据访 ...

最新文章

  1. java方面的文献综述怎么写_文献综述应该怎么写?
  2. iPhone 12快来了!苹果或本周公布发布会时间
  3. 请大家慎用联想笔记本的NOVO功能
  4. python-gui-pyqt5的使用方法-7--partial 传递参数的方法:
  5. andriod连接mysql测试工具,Android数据库调试工具
  6. mysql 主要有哪些函数_MySql常用函数全部汇总
  7. 从零开始配置 vim(4)——键盘映射的一些技巧
  8. 元素周期表排列的规律_元素周期表的排列有什么规律?
  9. 51单片机学习 基础知识总结
  10. Linux常用命令大全 阶段性总结(二)
  11. git merge冲突解决
  12. 到底哪一首才是唐诗第一?
  13. linux下go语言代理
  14. 求生之路服务器列表只显示ip,L4DL4D2 玩家进入退出+玩家转队伍SteamIdIP+国家+城市显示SQL版本 SP源码 2.4(2013-10-15更新)...
  15. RemoteView流程
  16. 跨境电商亚马逊之你知道什么是亚马逊电商吗
  17. 月圆之夜-体验报告(完稿时间2021/6/11)
  18. 利用Python开发App
  19. 决策树与剪枝、bagging与随机森林、极端随机树、Adaboost、GBDT算法原理详解
  20. IC电源去耦原理及滤波元件选型

热门文章

  1. Excel如何在excel中根据关键词从字符串中查找并提取
  2. 友盟第三方登录 无法切换账号 退出 取消授权
  3. 用高德js api做h5定位功能
  4. shell简介和脚本执行方式
  5. 广东省梅州市谷歌卫星地图下载
  6. ipad发布会ipad_拥有ipad的成本
  7. 嵌入式Linux学习笔记(1-2)——vi编辑器
  8. GOFLY在线客服系统/外贸网站在线客服+多语言支持 外贸网站即时通讯工具/中英文切换教程...
  9. 小程序微信头像授权、手机号授权、地理位置授权
  10. 在word中快速查找所有图片