Spring整合MongoDB小Demo

docker安装MongoDB

  • 查找mongoDB的镜像
docker search mongodb
  • 下载mongo镜像
docker pull mongo
  • 查看本地是否mongo的镜像
docker images
  • 运行容器,将端口映射到宿主机的27017端口
docker run -itd --name mongo -p 27017:27017 mongo

创建Maven工程(IDEA)

  • 添加依赖(Spring测试依赖、SpringData MongoDB依赖)
    <dependency>
      <groupId>org.springframework.data</groupId>
      <artifactId>spring-data-mongodb</artifactId>
      <version>1.10.6.RELEASE</version>
    </dependency>

      <dependency>
          <groupId>org.springframework</groupId>
          <artifactId>spring-test</artifactId>
        <version>4.3.13.RELEASE</version>
        <exclusions>
          <exclusion>
            <artifactId>spring-core</artifactId>
            <groupId>org.springframework</groupId>
          </exclusion>
        </exclusions>
      </dependency>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.12</version>
    </dependency>
  • resource目录下创建mongo.properties文件,存储连接的数据库和地址和端口
mongo.database=admin
mongo.server.address=127.0.0.1
mongo.server.port=27017
  • 创建com.test.config包,里面创建MongoConfig.java,使用@PropertySource注解读取刚才的配置文件,继承抽象类AbstractMongoConfiguration,重载getDatabaseName()和mongo()方法,注入Environment对象,使用配置文件中的配置
package com.test.config;

import com.mongodb.Mongo;
import com.mongodb.MongoClient;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;
import org.springframework.core.env.Environment;
import org.springframework.data.mongodb.config.AbstractMongoConfiguration;

/**
 * @author 11699
 * @date 20/3/21 - 11:11
 */
@Configuration
@PropertySource("classpath:mongo.properties")
public class MongoConfig extends AbstractMongoConfiguration {

    @Autowired
    private Environment env;

    @Override
    protected String getDatabaseName() {
        return env.getProperty("mongo.database");
    }

    @Override
    public Mongo mongo() throws Exception {
       return new MongoClient(
               env.getProperty("mongo.server.address"),
               Integer.parseInt(env.getProperty("mongo.server.port")));
    }
}
  • 创建con.test.domain包,创建Student类,使用@Document标记是这是一个文档,@Id标记id字段,@Field("stu_age")标记持久化时候对应的域名
package com.test.domain;

import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document;
import org.springframework.data.mongodb.core.mapping.Field;

/**
 * @author 11699
 * @date 20/3/21 - 11:28
 */
@Document
public class Student {

    @Id
    private String id;

    private String name;

    @Field("stu_age")
    private Integer age;

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }
}
  • 创建测试类 注入MongoOperations(MongoTemplate实现的接口)
package com.test;

import com.test.config.MongoConfig;
import com.test.domain.Student;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.mongodb.core.MongoOperations;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

/**
 * Unit test for simple App.
 */

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = MongoConfig.class)
public class AppTest {

    @Autowired
    private MongoOperations mongo;

}
  • 测试保存
@Test
public void testSave(){
    Student student = new Student();
    student.setName("小明");
    student.setAge(11);

    mongo.save(student, "stu");
}
  • 查询数量
@Test
public void testCount(){
    long count = mongo.getCollection("stu").count();
    System.out.println("数量为:"+ count);
}
  • 查询全部
@Test
public void testQuery(){
    List<Student> list = mongo.findAll(Student.class, "stu");
    for (Student student : list) {
        System.out.println(student);
    }
}
  • 根据id查询
@Test
public void testFindById(){
    Student stu = mongo.findById("5e759d94ecc4c0fe0007f312", Student.class, "stu");
    System.out.println(stu);
}
  • 复杂查询
@Test
public void testComplexQuery(){
    List<Student> list = mongo.find(Query.query(Criteria.where("name").is("小明")), Student.class, "stu");
    for (Student student : list) {
        System.out.println(student);
    }
}
  • 删除
@Test
public void testRemove(){
    //先查询
    Student stu = mongo.findById("5e759d94ecc4c0fe0007f312", Student.class, "stu");
    mongo.remove(stu);
}

源码下载

原文地址:https://www.cnblogs.com/erkye/p/12539099.html

时间: 2024-07-31 20:25:45

Spring整合MongoDB小Demo的相关文章

像我这样优雅地进行Spring整合MongoDB

本文重点是要将mongodb与spring整合到项目中去,在实践中发现问题,追踪问题,然后解决问题. 一.准备 Maven.Spring(spring-data-mongodb) spring Data for MongoDB是Spring Data的一个子模块. 目标是为mongodb提供一个相近的一致的基于Spring的编程模型. Spring Data for MongoDB核心功能是映射POJO到Mongo的DBCollection中的文档,并且提供Repository 风格数据访问层.

Spring整合MongoDB

版本: spring:4.1.3.RELEASE mongo-java-driver.version:3.4.1 spring-data-mongodb.version:1.7.0.RELEASE 配置: 1.pom.xml中添加核心依赖(两个) +++++++++++++++++++++++++++++++++++++++++++++++++++++                 <!-- mongo-java-dirver --> <dependency> <group

struts2和hibernate整合的小Demo

jar包下载地址 创建一个web项目. 导入jar包 配置web.xml <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="

spring 整合mongodb报NoSuchMethodError错误

刚开始通过网上查到相关的资料进行了一些配置,参考链接:http://www.open-open.com/lib/view/open1454374782167.html maven的dependencies如下: <dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> <version>4.2.3.RELEASE&l

springboot整合activemq小demo

直接上干货... 1.首先配置pom.xml文件如下: <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.

spring MVC 整合mongodb

Spring Mongodb 目录 1 SPRING整合MONGODB 1 1.1 环境准备 1 1.2 包依赖 1 1.3 配置 2 2 案列 5 2.1 SPRING MVC整合MONGODB代码案例 5 1 Spring整合Mongodb 1.1 环境准备 1. mongodb官网 http://www.mongodb.org/,下载mongodb安装包和mongodb的java驱动包. mongodb安装包(下载地址http://www.mongodb.org/downloads).Mo

spring 整合 servlet

目的:记录spring整合 servlet过程demo.(企业实际开发中可能很少用到),融会贯通. 前言:在学习spring 过程(核心 ioc,aop,插一句 学了spring 才对这个有深刻概念, 在net时候都是直接使用,不得不说 java 还是深刻点)过程中,我们基本上都是在test中测试如图 环境:IDEA 但是,开发中是 spring容器 是共享的,其他地方直接调用,这里就涉及到spring和其他的整合,此文servlet 为测试点. 1:新建servlet 过程参考,https:/

Spring Boot2 系列教程 (十八) | 整合 MongoDB

微信公众号:一个优秀的废人.如有问题,请后台留言,反正我也不会听. 前言 如题,今天介绍下 SpringBoot 是如何整合 MongoDB 的. MongoDB 简介 MongoDB 是由 C++ 编写的非关系型数据库,是一个基于分布式文件存储的开源数据库系统,它将数据存储为一个文档,数据结构由键值 (key=>value) 对组成.MongoDB 文档类似于 JSON 对象.字段值可以包含其他文档,数组及文档数组,非常灵活.存储结构如下: { "studentId": &qu

Spring Boot 从入门到精通(十)整合 MongoDB 实现读写非关系型数据库

来源:素文宅博客 地址:https://blog.yoodb.com/yoodb/article/detail/1578 MongoDB是一个开源的NoSQL文档数据库.它可以存储多种数据结构,类似JSON的BSON,可以存储复杂数据类型. Spring Boot为使用MongoDB提供了很多便利,包括spring-boot-starter-data-mongodb 'Starter POM'.本文学习一下Spring Boot中整合MongoDB数据库,来实现以不同方法读写MongoDB数据库