Convertir DBObject en POJO en utilisant MongoDB Java Driver
MongoDB semble renvoyer des objets BSON/JSON.
j'ai pensé que vous seriez sûrement capable de récupérer des valeurs comme des chaînes, des ints, etc. qui peut ensuite être sauvé comme POJO.
j'ai un DBObject (instanciated as a BasicDBObject) à la suite d'une itération sur une liste ... (cur.prochain.))(
Est le seul moyen (autre que d'utiliser une sorte de persistance cadre) pour obtenir les données dans un POJO d'utiliser un JSON serlialiser/deserialiser?
Ma méthode ressemble ceci:
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;
}
EDIT: c'est assez évident, il suffit de faire quelque chose comme ça.
5 réponses
Il y a quelques libs java qui peut vous aider avec ça:
- Morhpia -http://code.google.com/p/morphia/
- données de printemps pour MongoDB -http://www.springsource.org/spring-data/mongodb
laisser le printemps faire le levage lourd avec ce qu'il a déjà construit pour cela...
le vrai truc est: mongoTemplate.getConverter ().lire (Foo.classe, obj);
par exemple, en utilisant un 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/
Si une réponse tardive , quelqu'un pourrait trouver cela utile.
j'utilise GSON pour convertir de BasicDBObject
à mon propre POJO qui est TinyBlogDBObject
TinyBlogDBObject obj = convertJSONToPojo(cursor.next().toString());
private static TinyBlogDBObject convertJSONToPojo(String json){
Type type = new TypeToken< TinyBlogDBObject >(){}.getType();
return new Gson().fromJson(json, type);
}
Vous pouvez utiliser GSON bibliothèque fournie par Google. Voici le exemple. Il y a beaucoup d'autres api que vous pouvez utiliser pour convertir json en pojo comme l'api de jettisation,etc.
1. Fournir aux haricots MongoDatabase un bon Registre de la corégulation
@Bean public MongoDatabase mongoDatabase() {
PojoCodecProvider pojoCodecProvider = PojoCodecProvider.builder().automatic(true).build();
CodecRegistry pojoCodecRegistry = CodecRegistries.fromRegistries(MongoClient.getDefaultCodecRegistry(), CodecRegistries.fromProviders(pojoCodecProvider));
MongoClient mongoClient = new MongoClient("localhost", 27017);
return mongoClient.getDatabase("example_db_name").withCodecRegistry(pojoCodecRegistry);
}
2. Annoter les POJOS!--5-->
public class ProductEntity {
@BsonProperty("name") public final String name;
@BsonProperty("description") public final String description;
@BsonProperty("thumb") public final ThumbEntity thumbEntity;
@BsonCreator
public ProductEntity(
@BsonProperty("name") String name,
@BsonProperty("description") String description,
@BsonProperty("thumb") ThumbEntity thumbEntity) {
this.name = name;
this.description = description;
this.thumbEntity = thumbEntity;
}
}
public class ThumbEntity {
@BsonProperty("width") public final Integer width;
@BsonProperty("height") public final Integer height;
@BsonProperty("url") public final String url;
@BsonCreator
public ThumbEntity(
@BsonProperty("width") Integer width,
@BsonProperty("height") Integer height,
@BsonProperty("url") String url) {
this.width = width;
this.height = height;
this.url = url;
}
}
3. Requête mongoDB et obtenir POJOS
MongoCollection<Document> collection = mongoDatabase.getCollection("product");
Document query = new Document();
List<ProductEntity> products = collection.find(query, ProductEntity.class).into(new ArrayList<>());
s'il vous Plaît vérifier ma réponse dans l'autre post
POJO à org.bfils.Document et vice Versa