gpt4 book ai didi

java - MongoDB:如何实现用于保存对象的 PUT 方法?

转载 作者:可可西里 更新时间:2023-11-01 10:01:19 24 4
gpt4 key购买 nike

http://www.mongodb.org/display/DOCS/Java+-+Saving+Objects+Using+DBObject

此页面是关于在 MongoDB 中保存和检索对象的。但是实现了DBObject之后,又要重写一堆方法。有谁知道如何实现 PUT 方法以便 "myTweet.put("user", userId);"可以工作吗?

最佳答案

而不是实现 DBObject只需扩展 BasicDBObject

class Tweet extends BasicDBObject {
public Tweet() {
super();
}
public Tweet(BasicDBObject base) {
super();
this.putAll(base);
}
}

Tweet myTweet = new Tweet();
myTweet.put("user", userId);

BasicDBObject工具 DBObject因此,可以将扩展它的类传递给任何需要实现 DBObject 的类的函数。如果您想实现该接口(interface),则必须提供一些容器类来存储推文属性 BasicDBObject 通过扩展另一个名为 BasicBSONObject 的类来实现,您可以在 source 中看到该类。 , 一个天真的实现看起来像这样:

import java.util.HashMap;
import java.util.Map;
import java.util.Set;

import org.bson.BSONObject;

import com.mongodb.DBObject;


public class Tweet implements DBObject {
private Map<String, Object> data;
private boolean partial;

public Tweet() {
data = new HashMap<>();
partial = false;
}

@Override
public Object put(String key, Object value) {
return data.put(key, value);
}

@SuppressWarnings("unchecked")
@Override
public void putAll(BSONObject o) {
data.putAll(o.toMap());
}

@SuppressWarnings({ "rawtypes", "unchecked" })
@Override
public void putAll(Map m) {
data.putAll(m);
}

@Override
public Object get(String key) {
return data.get(key);
}

@SuppressWarnings("rawtypes")
@Override
public Map toMap() {
return data;
}

@Override
public Object removeField(String key) {
return data.remove(key);
}

@Override
public boolean containsKey(String key) {
return data.containsKey(key);
}

@Override
public boolean containsField(String key) {
return data.containsKey(key);
}

@Override
public Set<String> keySet() {
return data.keySet();
}

@Override
public void markAsPartialObject() {
partial = true;
}

@Override
public boolean isPartialObject() {
return partial;
}
}

此类实现了 DBObject 并使用 HashMap 来存储它的属性。

关于java - MongoDB:如何实现用于保存对象的 PUT 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13578051/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com