使用MongoDB Java驱动程序将DBObject转换为POJO

2022-09-02 14:22:12

MongoDB似乎返回BSON/JSON对象。

我认为您肯定能够检索字符串,整数等值,然后将其保存为POJO。

我有一个DBObject(实例化为BasicDBObject),作为迭代列表的结果...(cur.next())。

将数据放入POJO的唯一方法(除了使用某种持久性框架之外)是使用JSON serlialiser/deserialiser的唯一方法吗?

我的方法如下所示:

public List<User> findByEmail(String email){
         DBCollection userColl;
         try {
            userColl = Dao.getDB().getCollection("users"); } catch (UnknownHostException e) { e.printStackTrace(); } catch (MongoException e) { e.printStackTrace();}
            DBCursor cur = userColl.find();
            List<User> usersWithMatchEmail = new ArrayList<User>();

            while(cur.hasNext()) {
               // this is where I want to convert cur.next() into a <User> POJO
               usersWithMatchEmail.add(cur.next());
            }
        return null;
    }

编辑:这很明显,做这样的事情。


答案 1

让Spring用它已经为此建造的东西来完成繁重的工作......

真正的诀窍是:mongoTemplate.getConverter().read(Foo.class, obj);

例如,当使用 DBCursor 时 -

while (cursor.hasNext()) { 
    DBObject obj = cursor.next(); 
    Foo foo = mongoTemplate.getConverter().read(Foo.class, obj);  
    returnList.add(foo); 
}

http://revelfire.com/spring-data-mongodb-convert-from-raw-query-dbobject/


答案 2

有一些java库可以帮助你: