当前位置: 首页 > article >正文

java 对mongodb操作封装工具类

在 Java 中,封装 MongoDB 操作的工具类是非常常见的做法。使用 MongoDB 官方的 Java 驱动程序,结合常用的工具类封装,可以使得与 MongoDB 的交互更加方便和清晰。下面是一个简单的 MongoDB 操作封装工具类的示例代码。

前提

首先,确保你已经在项目中引入了 MongoDB Java 驱动的依赖。你可以使用 Maven 或 Gradle 来添加依赖。

Maven 依赖:
<dependency>
    <groupId>org.mongodb</groupId>
    <artifactId>mongodb-driver</artifactId>
    <version>4.9.0</version> <!-- 请检查最新版本 -->
</dependency>

MongoDB 工具类封装

1. MongoDB 工具类

这个类包含了与 MongoDB 交互的常见操作,如获取数据库、获取集合、插入、查询、更新、删除等。

import com.mongodb.client.*;
import com.mongodb.client.model.Filters;
import com.mongodb.client.model.Updates;
import org.bson.Document;
import org.bson.conversions.Bson;

import java.util.ArrayList;
import java.util.List;

public class MongoDBUtil {

    private static final String URI = "mongodb://localhost:27017";  // MongoDB 连接字符串
    private static final String DATABASE_NAME = "testdb";           // 默认数据库名
    private static MongoClient mongoClient;
    private static MongoDatabase database;

    // 静态初始化,建立数据库连接
    static {
        mongoClient = MongoClients.create(URI);
        database = mongoClient.getDatabase(DATABASE_NAME);
    }

    // 获取数据库实例
    public static MongoDatabase getDatabase() {
        return database;
    }

    // 获取集合实例
    public static MongoCollection<Document> getCollection(String collectionName) {
        return database.getCollection(collectionName);
    }

    // 插入一条记录
    public static void insertOne(String collectionName, Document document) {
        MongoCollection<Document> collection = getCollection(collectionName);
        collection.insertOne(document);
    }

    // 插入多条记录
    public static void insertMany(String collectionName, List<Document> documents) {
        MongoCollection<Document> collection = getCollection(collectionName);
        collection.insertMany(documents);
    }

    // 查找单条记录
    public static Document findOne(String collectionName, Bson filter) {
        MongoCollection<Document> collection = getCollection(collectionName);
        return collection.find(filter).first();
    }

    // 查找所有记录
    public static List<Document> findAll(String collectionName) {
        MongoCollection<Document> collection = getCollection(collectionName);
        List<Document> result = new ArrayList<>();
        collection.find().forEach(result::add);
        return result;
    }

    // 查找满足条件的记录
    public static List<Document> find(String collectionName, Bson filter) {
        MongoCollection<Document> collection = getCollection(collectionName);
        List<Document> result = new ArrayList<>();
        collection.find(filter).forEach(result::add);
        return result;
    }

    // 更新一条记录
    public static void updateOne(String collectionName, Bson filter, Bson update) {
        MongoCollection<Document> collection = getCollection(collectionName);
        collection.updateOne(filter, update);
    }

    // 更新多条记录
    public static void updateMany(String collectionName, Bson filter, Bson update) {
        MongoCollection<Document> collection = getCollection(collectionName);
        collection.updateMany(filter, update);
    }

    // 删除一条记录
    public static void deleteOne(String collectionName, Bson filter) {
        MongoCollection<Document> collection = getCollection(collectionName);
        collection.deleteOne(filter);
    }

    // 删除多条记录
    public static void deleteMany(String collectionName, Bson filter) {
        MongoCollection<Document> collection = getCollection(collectionName);
        collection.deleteMany(filter);
    }

    // 关闭 MongoDB 连接
    public static void close() {
        if (mongoClient != null) {
            mongoClient.close();
        }
    }

    public static void main(String[] args) {
        // 测试 MongoDB 操作
        MongoDBUtil.insertOne("users", new Document("name", "John").append("age", 30));
        MongoDBUtil.insertMany("users", List.of(
                new Document("name", "Jane").append("age", 25),
                new Document("name", "Mike").append("age", 35)
        ));

        Document user = MongoDBUtil.findOne("users", Filters.eq("name", "John"));
        System.out.println(user.toJson());

        List<Document> allUsers = MongoDBUtil.findAll("users");
        allUsers.forEach(u -> System.out.println(u.toJson()));

        MongoDBUtil.updateOne("users", Filters.eq("name", "John"), Updates.set("age", 31));
        MongoDBUtil.deleteOne("users", Filters.eq("name", "Mike"));

        MongoDBUtil.close(); // 关闭连接
    }
}

2. 功能解释

连接 MongoDB
  • MongoClients.create(URI):创建 MongoDB 客户端连接。
  • mongoClient.getDatabase(DATABASE_NAME):获取指定名称的数据库实例。
数据库操作
  • insertOne():插入单条数据。
  • insertMany():插入多条数据。
  • findOne():查询单条记录,返回符合条件的第一条文档。
  • findAll():查询集合中的所有文档。
  • find():根据查询条件查找所有符合条件的记录。
  • updateOne():更新符合条件的第一条记录。
  • updateMany():更新所有符合条件的记录。
  • deleteOne():删除符合条件的第一条记录。
  • deleteMany():删除所有符合条件的记录。
连接关闭
  • mongoClient.close():关闭 MongoDB 客户端连接。

3. 使用该工具类

您可以像上面代码中的 main 方法那样,使用该工具类进行各种 MongoDB 操作。

4. 异常处理和连接池

在生产环境中,通常建议:

  • 异常处理:对数据库连接或操作进行异常捕获,避免应用崩溃。
  • 连接池:对于高并发的应用,可以考虑使用 MongoDB 提供的连接池机制,以提高性能。

5. 改进和扩展

您可以根据需要扩展这个工具类:

  • 增加更多查询功能:比如分页查询、排序、聚合查询等。
  • 更复杂的更新:例如使用 upsert(如果文档不存在则插入)等操作。

通过这个封装类,您可以简化 MongoDB 操作的复杂性,并且使得代码更具可维护性。


http://www.kler.cn/a/449149.html

相关文章:

  • Tomcat负载均衡全解析
  • Pr:音频仪表
  • FPGA实现MIPI转FPD-Link视频传输+图像缩放,基于IMX327+FPD953架构,提供工程源码和技术支持
  • 安卓从Excel文件导入数据到SQLite数据库的实现
  • 小白考研历程:跌跌撞撞,起起伏伏,五个月备战历程!!!
  • 汽车高分子材料光老化试验方法汇总
  • uniapp 微信小程序 页面部分截图实现
  • UE5 猎户座漂浮小岛 12 技能 瞬移 重力控制
  • 合合信息分享视觉内容安全新技术,助力行业智能化发展
  • C++ 日志输出
  • python中使用时间间隔操作及技巧
  • 【PPTist】组件结构设计、主题切换
  • Flink基本原理 + WebUI说明 + 常见问题分析
  • 某科技局国产服务器PVE虚拟化技术文档
  • 宠物用品电子商务系统|Java|SSM|VUE| 前后端分离
  • 【day13】深入面向对象编程
  • Windows电脑异地SSH远程连接苹果MacOS小主机Mac mini详细教程
  • scala中正则表达式的使用
  • 语音助手关键模块整理
  • 深入探讨 Go 中的高级表单验证与翻译:Gin 与 Validator 的实践之道20241223