繁体   English   中英

播放框架 2.8.8 (JAVA) 尝试与 mongoDB 连接

[英]Play framework 2.8.8 (JAVA) trying to connect with mongoDB

我是 Play 框架的新手,我已经用它特别是 2.8.8 版开始了一个项目。 我在我的项目中使用 mongoDB,在游戏中使用 eclipse。 现在我正在尝试将我的数据库与游戏连接起来。 我读了很多关于 Ebean 的内容,即播放 ORM 用于数据库连接,我已经尝试过了,但我仍然没有解决我的问题。 我的目标是连接到我的数据库提出了将在集合中注册信息的请求(mongo)
有人可以告诉我该怎么做吗? 我需要一些有用的提示配置或示例 model 来查看,以便我可以继续我的项目。

您需要在 build.sbt 中包含这些依赖项,以便与 mongo 进行交互。 (您可以使用您的相关版本。以下给出的版本正在与 play 2.7 一起使用)

“org.jongo”%“jongo”%“1.3.1”、“org.mongodb”%“mongo-java-driver”%“3.10.2”

Mongo 存储库(连接器/Dao)class 示例:-

import handlers.MongoConnectionHandler;
import com.mongodb.BasicDBObject;
import com.mongodb.WriteResult;
import models.mongo.Message;
import org.jongo.MongoCollection;
import org.jongo.MongoCursor;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import skeletons.requests.ChatHistoryRequest;

import javax.inject.Inject;
import javax.inject.Singleton;
import java.util.ArrayList;
import java.util.List;


@Singleton
public class MessageMongoRepository {

    private final MongoCollection messageCollection;
    
    @Inject
    public MessageMongoRepository(MongoConnectionHandler mongoConnectionHandler) {
        messageCollection = mongoConnectionHandler.getCollection("messages");
    }

    public List<Message> fetchRecords() {
        BasicDBObject query = new BasicDBObject();
        query.put("f1", "val 1");
        query.put("f2", "val2");
        query.put("f3","val 3" );
        BasicDBObject sort = new BasicDBObject();
        MongoCursor<Message> messages = null;
        List<Message> messageList = new ArrayList<>();
        try {
            messages = messageCollection.find(query.toString()).sort(sort.toString()).limit(request.getSize()).as(Message.class);
        } catch (Exception e) {
            logger.error("Error in fetching messages");
            throw e;
        }
        if (messages != null) {
            while (messages.hasNext()) {
                messageList.add(messages.next());
            }
        } else {
            logger.error("No messages");
        }

        return messageList;
    }

    public String saveRecord(Message rec) {
        WriteResult result;
        try {
            result = messageCollection.save(rec);
        } catch (Exception e) {
            throw e;
        }
        return result.getUpsertedId().toString();
    }
}

该消息是用户定义的 Java Class

MongoConnectionHandler 示例

import com.mongodb.*;
import com.typesafe.config.Config;
import org.jongo.Jongo;
import org.jongo.MongoCollection;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import javax.inject.Inject;
import java.util.ArrayList;
import java.util.List;

public class MongoConnectionHandler {

    private final Config config;

    private final DB db;
    private final Jongo jongo;
    private final MongoClient mongoClient;
    private static final MongoClientOptions mongoClientOptions = new MongoClientOptions.Builder()
            .connectTimeout(1000)
            .maxConnectionIdleTime(1000)
            .socketTimeout(1000)
            .maxWaitTime(1000)
            .build();

    private final Logger logger = LoggerFactory.getLogger(this.getClass());

    @Inject
    public MongoConnectionHandler(Config config) {
        this.config = config;
        String user = this.config.getString("mongo.auth.user");
        String pass = this.config.getString("mongo.auth.pass");
        String authDb = this.config.getString("mongo.auth.db");
        MongoCredential mongoCredential = MongoCredential.createCredential(user, authDb, pass.toCharArray());
        List<ServerAddress> serverAddressList = new ArrayList<>();
        String[] hostList = this.config.getString("mongo.host").split(",");
        for (String host : hostList) {
            String[] ipPortPair = host.split(":");
            ServerAddress serverAddress = new ServerAddress(ipPortPair[0], Integer.valueOf(ipPortPair[1]));
            serverAddressList.add(serverAddress);
        }
        mongoClient = new MongoClient(serverAddressList, mongoCredential, mongoClientOptions);
        db = mongoClient.getDB(this.config.getString("mongo.db"));
        jongo = new Jongo(db);
    }

    public MongoCollection getCollection(String name) {
        MongoCollection collection = null;
        try {
            collection = jongo.getCollection(name);
        } catch (Exception e) {
            logger.error("Error while getting collection : {}", name);
            throw e;
        }
        return collection;
    }
}

继承人如何获得 mongodb 和游戏框架以合作理解游戏中的模块将是必要的检查此模块按照步骤操作,您将获得 mongodb 与游戏一起工作Z5E056C500A1C4B6A7110B50D807BADE.com

(如果这个答案有帮助,请标记正确,我最近被困在这里)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM