Spring Data MongoDB 快速上手

开发环境

项目 版本
Spring Boot 2.2.5
Java 1.8
Gradle 6.2.2

简介

MongoDB 善于存储,面对的是百万级甚至千万级的数据。

添加依赖

1
implementation 'org.springframework.boot:spring-boot-starter-data-mongodb'

创建工具类(作为组件)

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
import com.mongodb.client.MongoCollection;
import com.mongodb.client.result.DeleteResult;
import org.bson.Document;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.data.mongodb.core.query.Update;
import org.springframework.stereotype.Component;
 
import java.util.Collection;
import java.util.List;
 
/**
 * @ClassName MongoDBClient
 * @Desc TODO   MongoDB 工具类
 * @Version 1.0
 */
@Component
public class MongoDBClient {
 
    @Autowired
    private MongoTemplate mongoTemplate;
 
    /*
     * @ClassName MongoDBClient
     * @Desc TODO   创建集合,并返回是否创建成功  -2:已存在 / -1:创建失败 / 1:创建成功
     * @Version 1.0
     */
    public Integer createCollection(String collectionName){
        // 先判断集合是否存在
        if(mongoTemplate.collectionExists(collectionName)){
            return -2;
        }else{
            // 创建一个集合
            mongoTemplate.createCollection(collectionName);
            // 判断集合是否存在
            if(mongoTemplate.collectionExists(collectionName)){
                return 1;
            }else{
                return -1;
            }
        }
    }
 
    /*
     * @ClassName MongoDBClient
     * @Desc TODO   在指定集合中添加数据
     * @Version 1.0
     */
    public void add(Collection<?> batchToSave , String collectionName){
        mongoTemplate.insert(batchToSave,collectionName);
    }
 
    /*
     * @ClassName MongoDBClient
     * @Desc TODO   根据条件和指定集合删除数据
     * @Version 1.0
     */
    public void delete(Query query , Object obj , String collectionName){
        mongoTemplate.remove(query, obj.getClass(), collectionName);
    }
 
    /*
     * @ClassName MongoDBClient
     * @Desc TODO   根据条件更新数据
     * @Version 1.0
     */
    public void update(Query query , Update update , Object obj , String collectionName){
        mongoTemplate.updateMulti(query , update , obj.getClass() , collectionName);
    }
 
    /*
     * @ClassName MongoDBClient
     * @Desc TODO   获取指定集合下的全部数据
     * @Version 1.0
     */
    public List<?> getAllByCollectionName(Object obj , String collectionName){
        return mongoTemplate.findAll(obj.getClass(),collectionName);
    }
 
    /*
     * @ClassName MongoDBClient
     * @Desc TODO   根据条件和集合名称查询数据
     * @Version 1.0
     */
    public List<?> getByConditionAndCollectionName(Query query , Object obj , String collectionName){
        return mongoTemplate.find(query, obj.getClass() , collectionName);
    }
 
}

SpringBoot整合MongoDB

updatedupdated2020-07-122020-07-12
加载评论