Java MongoDB 3.X 3.04 Crud 增刪查改 deleteMany updateMany updateOne
阿新 • • 發佈:2018-12-24
User.java 類
package com.guoxin.mongodb.module; public class User { private String id; private String title; private String date; private String content; public String getId() { return id; } public void setId(String id) { this.id = id; } public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } public String getDate() { return date; } public void setDate(String date) { this.date = date; } public String getContent() { return content; } public void setContent(String content) { this.content = content; } }
MongoUtil.java 工具類
package com.guoxin.mongodb.utils; import java.lang.reflect.Field; import java.lang.reflect.Method; import java.util.Arrays; import com.mongodb.MongoClient; import com.mongodb.MongoCredential; import com.mongodb.ServerAddress; import com.mongodb.client.MongoDatabase; public class MongoUtil { public static MongoUtil mongoUtil = null; public static MongoClient mongoClient = null; public static MongoDatabase mongoDataBase = null; private MongoUtil() { } public static MongoUtil getInstance() { if (mongoUtil == null) { mongoUtil = new MongoUtil(); } return mongoUtil; } public void init() { mongoUtil.closeMongoClient(); mongoUtil.getMongoClient(); mongoUtil.getMongoDataBase(); } private void getMongoClient() { System.out.println("*********** getMongoClient***********"); try { // 使用者名稱 資料庫 密碼 MongoCredential credential = MongoCredential.createCredential( "guoxin01", "guoxin", "123456".toCharArray()); // IP port ServerAddress addr = new ServerAddress("192.168.1.137", 27017); mongoClient = new MongoClient(addr, Arrays.asList(credential)); // 得到資料庫 } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } private void getMongoDataBase() { System.out.println("*********** getMongoDataBase***********"); try { if (mongoClient != null) { // 得到資料庫 mongoDataBase = mongoClient.getDatabase("guoxin"); } else { throw new RuntimeException("MongoClient不能夠為空"); } } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } public void closeMongoClient() { System.out.println("*********** closeMongoClient***********"); if (mongoDataBase != null) { mongoDataBase = null; } if (mongoClient != null) { mongoClient.close(); } } /** * 將實體類的obj的欄位資訊和內容動態放到mapParams裡面 * * @param mapParams * @param obj * @param method */ public void dymParms(Object mapParams, Object obj, String method) { try { if (obj != null) { Field[] fields = obj.getClass().getDeclaredFields(); Class<?>[] arrClazz = new Class[2]; arrClazz[0] = String.class; arrClazz[1] = Object.class; Method m = mapParams.getClass().getDeclaredMethod(method, arrClazz); m.setAccessible(true); if (fields != null) { for (Field f : fields) { f.setAccessible(true); Object value = f.get(obj); if (null!=value) { Class<?> clazz = value.getClass(); Object[] strs = new Object[2]; if (clazz == String.class) { if ( !"".equals(String.valueOf(value))) { strs[0] = f.getName(); strs[1] = value; m.invoke(mapParams, strs); } } else { strs[0] = f.getName(); strs[1] = value; m.invoke(mapParams, strs); } } } } } } catch (SecurityException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IllegalArgumentException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IllegalAccessException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } } }
MongoDao.java Dao介面
package com.guoxin.mongodb.dao; import com.mongodb.BasicDBObject; import com.mongodb.MongoClient; import com.mongodb.client.MongoDatabase; /** * Dao 層介面 * * @author GuoXin * */ public interface MongoDao { /** * Get Data BY ID * @param db * @param table * @param Id */ public void queryByID(MongoDatabase db, String table, String Id); /** * Insert Data * @param db * @param table * @param obj */ public void insert(MongoDatabase db, String table, Object obj); /** * Delete Data * @param db * @param table * @param obj */ public void delete(MongoDatabase db, String table, Object obj); /** * Update Data * @param db * @param table * @param conditions * @param obj */ public void update(MongoDatabase db, String table, Object conditions, Object obj); }
MongoDaoImpl.java Dao實現類
package com.guoxin.mongodb.dao.impl;
import org.bson.Document;
import com.guoxin.mongodb.dao.MongoDao;
import com.guoxin.mongodb.utils.MongoUtil;
import com.mongodb.BasicDBObject;
import com.mongodb.DBCollection;
import com.mongodb.DBObject;
import com.mongodb.MapReduceCommand;
import com.mongodb.MapReduceOutput;
import com.mongodb.MongoClient;
import com.mongodb.client.FindIterable;
import com.mongodb.client.MapReduceIterable;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoCursor;
import com.mongodb.client.MongoDatabase;
import com.mongodb.util.JSON;
/**
* Dao層實現類
* @author GuoXin
*
*/
public class MongoDaoImpl implements MongoDao {
@Override
public void queryByID(MongoDatabase db, String table,String Id) {
MongoCollection<Document> collection = db.getCollection(table);
BasicDBObject query = new BasicDBObject("id", Id);
FindIterable<Document> iterable = collection.find(query);
MongoCursor<Document> cursor = iterable.iterator();
while (cursor.hasNext()) {
Document user = cursor.next();
System.out.println(user.toJson());
}
cursor.close();
}
// test insert
@Override
public void insert(MongoDatabase db,String table,Object obj) {
MongoCollection<Document> collection = db.getCollection(table);
Document doc = new Document();
MongoUtil.getInstance().dymParms(doc, obj,"put");
collection.insertOne(doc);
FindIterable<Document> iterable = collection.find();
MongoCursor<Document> cursor = iterable.iterator();
while (cursor.hasNext()) {
Document user = cursor.next();
System.out.println(user.toString());
}
}
@Override
public void delete(MongoDatabase db,String table,Object obj) {
MongoCollection<Document> collection = db.getCollection(table);
BasicDBObject query = new BasicDBObject();
MongoUtil.getInstance().dymParms(query, obj, "append");
collection.deleteMany(query);
FindIterable<Document> iterable = collection.find();
MongoCursor<Document> cursor = iterable.iterator();
while (cursor.hasNext()) {
Document user = cursor.next();
System.out.println(user.toString());
}
}
@Override
public void update(MongoDatabase db,String table,Object conditions,Object obj) {
MongoCollection<Document> collection = db.getCollection(table);
BasicDBObject where = new BasicDBObject();
MongoUtil.getInstance().dymParms(where, conditions, "append");
BasicDBObject newContent = new BasicDBObject();
MongoUtil.getInstance().dymParms(newContent, obj, "append");
BasicDBObject update = new BasicDBObject("$set",newContent);
//updateMany updateOne
collection.updateMany(where, update);
FindIterable<Document> iterable = collection.find();
MongoCursor<Document> cursor = iterable.iterator();
while (cursor.hasNext()) {
Document user = cursor.next();
System.out.println(user.toString());
}
}
}