Spring Boot - MongoDB CRUD

本例展示一个Mongo CURD 的Demo, 由于我在springboot多数据源示例中已经使用了JPA形式的MongoRepository,所以在这个例子中我将只展示使用MongoTemplate(MongoOptions)方式。 @pdai

注意事项

  • MongoDB 可以直接使用java mongo.jar,也可以使用spring data封装的,还可以直接使用Springboot starter自动配置;在写代码时,你可以直接调用原生的接口,也可以调用MongoTemplate(MongoOptions), 还可以调用JPA形式的MongoRepository类;

简单示例相关代码

  • Pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<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.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.pdai</groupId>
    <artifactId>springboot-mongodb-demo</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>

    <name>springboot-mongodb-demo</name>
    <description>springboot-mongodb-demo CRUD</description>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.5.10.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-mongodb</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.4</version>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <configuration>
                    <skip>true</skip>
                    <testFailureIgnore>true</testFailureIgnore>
                </configuration>
            </plugin>
        </plugins>
    </build>

</project>
  • application.yml
spring:
  application:
    name: springboot-mongodb-demo
  data:
    mongodb:
      uri: mongodb://192.168.252.121:20000,192.168.252.122:20000,192.168.252.12:20000/demo
  • Entity

  • Dao
package com.pdai.springboot.mongodb.dao;

import com.pdai.springboot.mongodb.entity.DemoEntity;

public interface DemoDao {

    void saveDemo(DemoEntity demoEntity);

    void removeDemo(Long id);

    void updateDemo(DemoEntity demoEntity);

    DemoEntity findDemoById(Long id);
}
  • DaoImpl
package com.pdai.springboot.mongodb.dao;

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.data.mongodb.core.query.Update;
import org.springframework.stereotype.Component;

import com.pdai.springboot.mongodb.entity.DemoEntity;

import javax.annotation.Resource;

@Component
public class DemoDaoImpl implements DemoDao {

	@Resource
	private MongoTemplate mongoTemplate;

	@Override
	public void saveDemo(DemoEntity demoEntity) {
		mongoTemplate.save(demoEntity);
	}

	@Override
	public void removeDemo(Long id) {
		mongoTemplate.remove(id);
	}

	@Override
	public void updateDemo(DemoEntity demoEntity) {
		Query query = new Query(Criteria.where("id").is(demoEntity.getId()));

		Update update = new Update();
		update.set("title", demoEntity.getTitle());
		update.set("description", demoEntity.getDescription());
		update.set("by", demoEntity.getBy());
		update.set("url", demoEntity.getUrl());

		mongoTemplate.updateFirst(query, update, DemoEntity.class);
	}

	@Override
	public DemoEntity findDemoById(Long id) {
		Query query = new Query(Criteria.where("id").is(id));
		DemoEntity demoEntity = mongoTemplate.findOne(query, DemoEntity.class);
		return demoEntity;
	}

}
  • app
package com.pdai.springboot.mongodb;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class Application {
	public static void main(String[] args) {
		SpringApplication.run(Application.class, args);
	}
}

示例代码

@See https://github.com/realpdai/springboot-data-mongo-demo