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/