springBoot+MongoTemplate,往多个数据库中插入数据

2023-11-20

一、准备

1、建立一个springBoot的maven项目(使用spring initailizr,或者建立一个maven后自己添加相关springBoot配置)

<!--版本管理相关--> 
<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.2.1.RELEASE</version>
  </parent>

<!--springboot基础依赖包--> 
 <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-web</artifactId>
  </dependency>

<!--springboot打jar包专用插件--> 
  <build>
    <plugins>
      <plugin>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
      </plugin>
    </plugins>
  </build>

2、添加相关mongoDB依赖,直接使用spring-data-xxx系列jar

    <dependency>
      <groupId>org.springframework.data</groupId>
      <artifactId>spring-data-mongodb</artifactId>
      <version>2.2.3.RELEASE</version>
    </dependency> 

<!--spring-boot-starter-data-mongodb.jar 是在它的基础上进行的包装,
    使用了很多默认配置-->

 

3、启动mongoDB,并有可视化客户端工具。本次在window下启动mongoDB,具体教程参考其官网,有详细介绍。建好两个库如下:

二、编写代码

1、配置文件:

server:
  port:  8088
spring:
  data:
    mongodb:
      host: localhost
      host2: 10.99.86.87
    dbName:
      testDb: test
      userDb: user

2、自动配置类  @Configuration类

package com.steve.config;

import com.mongodb.MongoClient;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.SimpleMongoDbFactory;

@Configuration
public class MongoConfig {
    //读取配置文件里的值,部署后IP或者数据库名变化,不需重新打包
    @Value("${spring.data.mongodb.host}")
    private String mongohost;
    @Value("${spring.data.mongodb.host2}")
    private String mongohost2;
    @Value("${spring.data.dbName.testDb}")
    private String testDb;
    @Value("${spring.data.dbName.userDb}")
    private String userDb;

    @Bean
    @Primary
    public  MongoClient mongoClient() {
        return new MongoClient(mongohost);
    }
    @Bean
    public  MongoClient mongoClient2() {
        return new MongoClient(mongohost2);
    }
   /**
    * @Author  SteveTao
    * @Description  @Primary: 注解的作用是,在往IOC容器中注入同一个实体Bean的多个实例时
    * 优先注入该注解标注的实体。且多实例注入时,该注解是必须的,否则启动会报错:
    *               required a single bean, but 2 were found
    * @Date 2019/12/6 10:22
    **/
    @Bean
    @Primary
    public   MongoTemplate testMongoTemplate() {
        return new MongoTemplate(mongoClient(), testDb);
    }
    @Bean
    public   MongoTemplate userMongoTemplate() {
        return  new MongoTemplate(new SimpleMongoDbFactory(mongoClient(), userDb));
    }

}

3、实体类

import lombok.Data;
import org.springframework.stereotype.Component;

// 使用了Lombok插件,不需要写get,set方法。 不想用这个插件的这里自己添加就好了
@Component
@Data
public class Person {
    private String id;
    private String name;
    private int age;

    public Person() {
    }

    public Person(String id, String name, int age) {
        this.id = id;
        this.name = name;
        this.age = age;
    }

    @Override
    public String toString() {
        return "Person{" +
                "id='" + id + '\'' +
                ", name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}

4、juint测试类

package com.steve;

import static org.junit.Assert.assertTrue;
import com.steve.bean.Person;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.test.context.junit4.SpringRunner;
import javax.annotation.Resource;

//@SpringBootTest  测试类里面,可以注入并使用springIOC容器里的东西,不需要每次都起停程序
@RunWith(SpringRunner.class)
@SpringBootTest
public class AppTest{
    //这里用Resource,没有用Autoware
    @Resource
    private MongoTemplate testMongoTemplate;
    @Resource
    private MongoTemplate userMongoTemplate;

    //右键运行,看看两个库是否同时插入了数据
    @Test
    public void insert(){
        Person p=new Person("001","tom",88);
        testMongoTemplate.insert(p);
        Person p2=new Person("N0012","zhangsan",14);
        userMongoTemplate.insert(p2);
    }

    @Test
    public void queryon(){
        Person qp = testMongoTemplate.findOne(new Query(new Criteria("name").is("tom")), Person.class);
        System.out.println(qp);
    }

   @Test
    public void getOne(){
        //不指定数据集,根据实体类的类名获取数据集。 这里Person也会被当作collectionName
        Person zz = testMongoTemplate.findOne(query(where("name").is("tom5")), Person.class);
        //指定数据集   同一个数据库下,建了一个user集合,跟person结构相同,这时就要指定了
        Person one = testMongoTemplate.findOne(query(where("name").is("tom5")), Person.class,"user");
        System.out.println(one);
    }

}

5、测试结果

三、待补充

本次测试的是一个mongoDB链接下的不同数据库; 不同链接下的不同数据库,应该也是可以的。主要是在自动配置类里面,注入多个mongoClient实体类。不同的mongoTemplate使用对应的mongoClietn即可。

由于本机重装了系统,之前虚拟机的节点都删除了,现在手上没有多余的节点IP,这里不做展示了。感兴趣的可以用vmware起几个节点,装上mongoDB试验一下。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

springBoot+MongoTemplate,往多个数据库中插入数据 的相关文章

  • mongo

    mongo分页操作 与mysql数据库不同 xff0c mongo数据库是一种NoSQL数据库 xff0c 它的存储方式是以文档的形式进行存储的 本文主要记录了在开发过程中遇到的索引问题及数据库分页查询问题 常见的分页查询方式 1 使用li
  • docker安装MySQL、Redis、Mongo、Nginx

    这种东西 xff0c 菜鸟上一大把 我这里只是把这几个安装方法收集起来而已 废话不多说 xff0c 开始 xff01 一 安装MySQL 1 拉取mysql镜像 docker pull mysql 这里可以通过 版本号 的方式拉取指定版本的
  • linux安装mongo数据库软件robo3T(转载)

    robo 3T xff08 robomongo xff09 在ubuntu16 04上安装记录 96 王南北丶 2017 10 08 22 19 字数 450 阅读 1622评论 2喜欢 3 robo 3T是mongodb的一个非常好用的可
  • 《MongoDB》Mongo Shell中基本操作-ObjectId和文档创建详解

    前端博主 xff0c 热衷各种前端向的骚操作 xff0c 经常想到哪就写到哪 xff0c 如果有感兴趣的技术和前端效果可以留言 xff5e 博主看到后会去代替大家踩坑的 xff5e 主页 oliver尹的主页 格言 跌倒了爬起来就好 xff
  • 《MongoDB》Mongo Shell中的基本操作-文档查询

    前端博主 xff0c 热衷各种前端向的骚操作 xff0c 经常想到哪就写到哪 xff0c 如果有感兴趣的技术和前端效果可以留言 xff5e 博主看到后会去代替大家踩坑的 xff5e 主页 oliver尹的主页 格言 跌倒了爬起来就好 xff
  • docker-compose搭建mongo+elasticsearch+graylog运行环境

    graylog是一个小型的开源日志收集 分析 展示框架 主要graylog运行需要mongo elasticsearch xff0c 所以他们就组成了一个小的整体 一般在虚拟机上搭建 xff0c 可以分开安装部署 xff0c 但是既然是一个
  • mongo数据库中字符串型正负数值比较大小

    数据库中数据展示 xff1a 使用python代码实现 xff1a Requires pymongo 3 6 0 43 from pymongo import MongoClient client 61 MongoClient 34 mon
  • mongo数据库中字符串型正负数值比较大小

    数据库中数据展示 xff1a 使用python代码实现 xff1a Requires pymongo 3 6 0 43 from pymongo import MongoClient client 61 MongoClient 34 mon
  • 如何通过 PPA 在 Ubuntu 18.04 和 16.04 上安装 MongoDB 4.4

    MongoDB 是一个完全灵活的索引支持和丰富的查询数据库 Mongodb 是一个 NoSQL 数据库 MongoDB 通过 GridFS 提供大型媒体存储 点击here有关此版本 MongoDB 的更多详细信息 本教程将帮助您在 Ubun
  • mongodb 3.0 用户角色

    详情来自于官方 https docs mongodb com master reference method js user management MongoDB 3 0 安全权限访问控制 在添加用户上面3 0版本和之前的版本有很大的区别
  • mongo-删除重复数据

    mongo 删除重复数据 使用aggregate聚合查询重复数据 group中是查询条件 根据你的字段来聚合相同的数据 count用来统计重复出现的次数 match来过滤没有重复的数据 db getCollection 你的集合名 aggr
  • MongoDB $unwind保留空数组

    MongoDB的aggregate的pipeline中 有 unwind操作符 该操作符用于延展某一个数组类型的元素 作用与Python中的flatten 拍平 类似 但是在实际使用中 unwind 有一个非常明显的问题 就是如果要unwi
  • mongouve的使用

    http my oschina net u 1026531 blog 188336
  • 基于docker安装mongo

    1 背景 基于业务的需求 部分数据量较大 基本一天的数据量都在1亿左右 关系型数据库已经满足不了了要求 所以更换为非关系型数据库 当然非关系型数据库的种类有很多 我们选择的是mongo 要想了解熟悉mongo 不能只做书面上的功夫 必须较强
  • mongo简介——update & findAndModify

    由于发现mongo更新太快 跟我之前所学有很多差异 尤其是聚合操作 比较早的版本只有group和mapreduce两个函数 不支持avg max min sum这些操作 现在除了增加了这些常用操作以外还提供了更加丰富的聚合功能 从这一篇开始
  • mongo数据同步的三种方案

    一 直接复制data目录 需要停止源和目标的mongo服务 1 针对目标mongo服务已经存在 并正在运行的 mongo2 gt mongo 执行步骤 1 停止源 目标服务器的mongo服务 mongod dbpath usr local
  • 如何在 Ubuntu 22.04 上安装和保护 MongoDB

    MongoDB 是一种流行的开源 面向文档的 NoSQL 数据库 提供高性能 可扩展性和灵活性 由于它能够存储和管理大量非结构化数据 因此在现代 Web 应用程序中得到广泛使用 MongoDB 可以安装在各种操作系统上 包括 Ubuntu
  • Navicat 15安装教程,强烈推荐收藏!

    Navicat是一款轻量级的用于MySQL连接和管理的工具 非常好用 使用起来方便 简洁 下面讲讲其安装的过程 1 进入navicat官网 选择Navicat for MySQL 然后点击进行下载即可 官网连接 http www navic
  • mongo- spring boot 操作- and or查询

    mongo spring boot 操作 and or查询 场景 select from user where address 上海 age gt 10 and name 小明 or nickName like 小明 以前查询在 mongo
  • springBoot+MongoTemplate,往多个数据库中插入数据

    一 准备 1 建立一个springBoot的maven项目 使用spring initailizr 或者建立一个maven后自己添加相关springBoot配置

随机推荐

  • matlab傅里叶变换漫谈

    Introduction 由于research需要 不得已开始回顾关于高数的基本知识 写在这里方便记录 这个故事告诉我们 What goes around comes around meaning that life has a funny
  • java二维数组随机赋值_java 二维数组随机赋值

    java 二维数组随机赋值 2021 01 31 00 08 55 简介 目的 使用二维数组打印一个 10 行杨辉三角 视频教程推荐 java课程 思路 1 第一行有 1 个元素 第 n 行有 n 个元素 2 每一行的第一个元素和最后一个元
  • HTML头部

    目录 实例 HTML 元素 HTML
  • Linux命令·rm

    linux中删除文件和目录的命令 rm命令 rm是常用的命令 该命令的功能为删除一个目录中的一个或多个文件或目录 它也可以将某个目录及其下的所有文件及子目录均删除 对于链接文件 只是删除了链接 原有文件均保持不变 rm是一个危险的命令 使用
  • angular2 Http请求

    提供HTTP服务 HttpModule并不是Angular的核心模块 它是Angular用来进行Web访问的一种可选方式 并位于一个名叫 angular http的独立附属模块中 编辑app module ts import HttpMod
  • Fortran基础1——声明及数据类型

    声明及数据类型 一 声明的意义 告诉编译器要预留一些存放数据的内存空间 二 基本数据类型 数据类型 描述 整数 integer a 浮点数 real a 字符 character a 逻辑变量 logical a 复数 complex a
  • 程序员的自我修养——链接、装载与库

    1 温故而知新 操作系统概念 北桥 连接高速芯片 系统调用接口 以软件中断的方式提供 如Linux使用0x80号中断作为系统调用接口 多任务系统 进程隔离 设备驱动 直接使用物理内存的弊端 地址空间不隔离 内存使用效率低 程序运行的地址不确
  • httpclient 聚合

    文章目录 依赖 DefaultHttpClient 废弃 设置代理 传文件 HttpClientUtil version 4 3 6 依赖
  • html+js实现输入用户名和密码点击登录跳转页面

    html js实现 输入用户名和密码点击登录跳转其他页面 这里主页是index html 跳转的页面名字是随机点名 html 1 index html 用户名
  • OpenCV-Python调整图像对比度和带文字白纸照片背景漂白方法

    一 引言 在前面我们介绍了直方图均衡可以调整图像的对比度 那么还有没有其他方式调整对比度呢 答案是肯定的 今天就来招硬核的 二 对比度调整的硬核方法 这招硬核方法就是参考灰度图像的阈值处理 我们知道灰度图像的阈值处理的基本思想是 将图像中灰
  • SVN使用手册【简洁明了】

    这里写自定义目录标题 欢迎观看我的文档 废话不多说直接上方法 适合新手小白 SVN的工作原理 SVN的主要操作 1 SVN检出 SVN Checkout 2 SVN提交 上传SVN Commit SVN更新 下载 SVN Update 4
  • Kafka性能保证和延时队列实现原理

    数据不丢不漏 不重不错 一 不丢 生产写入消息不丢失 数据组织形式 首先 从数据组织形式来说 kafka有三层形式 kafka有多个主题 topic 每个主题有多个分区 分区分为主分区和副本分区 每个分区又有多条消息 而每个分区可以分布到不
  • epoll文件服务器,基于epoll实现的一个简单的web服务器

    详解1 EPOLLIN 文件描述符可以读 EPOLLOUT 文件描述符可以写 EPOLLPRI 文件描述符有紧急的数据可写 EPOLLERR 文件描述符发生错误 EPOLLHUP 文件描述符被挂起 EPOLLET 文件描述符有事件发生 所用
  • 服务器2012怎么安装无线网卡驱动,如何安装usb无线网卡驱动,教您如何安装电脑usb驱动...

    现在很多人都喜欢用无线上网 其原因就是摆脱了有限的束缚 使得电脑可以随时随地的上网 如果想要使用无线网卡的话 首先需要安装无线网卡驱动 那么无线网卡驱动怎么安装 这里 小编就来给大家分享无线网卡驱动安装的图文教程 对于没有内置无线网卡的台式
  • MacOS全套详细介绍如何下载Nginx

    前言 最近心血来潮试着用Mac下载Nginx 下载过程中也出现了一些下载问题 为了方便诸位更加舒心使用Nginx 避免走一些弯路和阅读大量文档 减少大量不必要的时间 这里就集中从0 1做个详细介绍 1 查看是否有HomeBrew Homeb
  • 理解 Linux 配置文件 [转载]

    理解 Linux 配置文件 转载 http www 900 ibm com developerWorks cn linux management configuration index shtml 分类和使用 Subodh Soni sub
  • echarts坐标轴

    坐标轴 直角坐标系中的 x y 轴 x 轴 y 轴 x 轴和 y 轴都由轴线 刻度 刻度标签 轴标题四个部分组成 部分图表中还会有网格线来帮助查看和计算数据 普通的二维数据坐标系都有 x 轴和 y 轴 通常情况下 x 轴显示在图表的底部 y
  • 服务器处理数据和信息吗,1.1 NG搭建服务器 与 动态数据处理介绍

    fastCGI 动态请求数据处理 1 fastcgi安装步骤 1 configure 生成makefile 2 在 make运行makefile sudo make instll 安装即可 出现错误如下 image png 解决方案如下 找
  • 微服务配置中心springcloud从nacos动态获取最新配置信息

    1 添加nacos配置中心依赖
  • springBoot+MongoTemplate,往多个数据库中插入数据

    一 准备 1 建立一个springBoot的maven项目 使用spring initailizr 或者建立一个maven后自己添加相关springBoot配置